Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta da data atual no tempo mysql


Sua expressão ADDDATE(DATE_SUB(curdate(), INTERVAL 1 WEEK), 6-WEEKDAY(curdate())) retorna apenas parte da data do último dia da semana, portanto, todos os dados após o início deste dia não são incluídos.

Você tem algumas opções para resolver isso:
  1. Rodada criadaAt to date sem parte do tempo:
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. Use a condição menos forte com o dia seguinte:
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()));