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

Como posso adicionar dias a uma data no MYSQL em uma consulta


Parece que você quer linhas onde end_date é mais tarde do que há cinco dias.

A melhor maneira de conseguir isso é com
 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

O negócio de adicionar números inteiros a datas não funciona no MySQL (é uma coisa do Oracle). Então você precisa usar a unidade INTERVAL n unit sintaxe.

Você notará que minha cláusula WHERE acima é funcionalmente equivalente a
 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Mas, a primeira formulação é superior à segunda por duas razões.
  1. se você mencionar end_date em uma cláusula WHERE sem envolvê-la em cálculos, sua consulta pode explorar um índice nessa coluna e pode ser executada mais rapidamente.
  2. DATE(NOW()) e CURDATE() ambos se referem ao primeiro momento de hoje (meia-noite). Mas CURDATE() é um pouco mais simples.