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

Consulta Mysql Dateff


Parece que você está tentando fazer isso:
WHERE specific_date < (NOW() + 5 days)

Em primeiro lugar, pense cuidadosamente sobre os casos-limite. Esses casos de limite podem morder seus tornozelos em SQL. Você realmente quer
WHERE specific_date <= (NOW() + 5 days)

Faça seu specific_date colunas timestamps contêm apenas dias (ou seja, datas com horas iguais à meia-noite) ou elas contêm datas e horas? Se você deseja obter os resultados desejados, precisa ter cuidado com esses detalhes.

De qualquer forma, tente isso:
WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

Esta é uma boa maneira de fazer essa pesquisa. O valor da coluna fica sozinho em um lado do predicado de desigualdade (o <= ) para que o MySQL possa fazer uma varredura de intervalo de índice se você tiver um índice na coluna.

A aritmética de datas no MySQL é bastante flexível. Você pode fazer
   NOW() + INTERVAL 10 SECOND
   NOW() - INTERVAL 2 MINUTE
   NOW() + INTERVAL 4 HOUR
   CURDATE() - INTERVAL 1 WEEK /* midnight one week ago */
   LAST_DAY(NOW()) + INTERVAL 1 DAY - INTERVAL 1 MONTH  /*first day of present month*/
   NOW() - INTERVAL 1 QUARTER
   CURDATE() - INTERVAL 5 YEAR

e assim por diante.