sql >> Base de Datos >  >> RDS >> Mysql

Consulta de fecha actual en el tiempo mysql

Su expresión ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate())) devuelve solo parte de la fecha del último día de la semana, por lo que no se incluyen todos los datos posteriores al inicio de este día.

Tienes un par de opciones para resolver esto:

  1. Ronda creada en la fecha sin parte de tiempo:
SELECT *
FROM your_table
WHERE DATE(createdAt) BETWEEN 
    SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
    ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate()));
  1. Usar condición fuerte menos con el día siguiente:
SELECT *
FROM your_table
WHERE 
    createdAt >= SUBDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), WEEKDAY(curdate())) AND
    createdAt < ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 7-WEEKDAY(curdate()));