Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je ajouter des jours à une date dans MYSQL dans une requête

Il semble que vous vouliez des lignes où end_date il y a plus de cinq jours.

La meilleure façon d'y parvenir est avec

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

L'ajout d'entiers aux dates ne fonctionne pas dans MySQL (c'est un truc d'Oracle). Vous devez donc utiliser l'unité INTERVAL n unit syntaxe.

Vous remarquerez que ma clause WHERE ci-dessus est fonctionnellement équivalente à

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Mais, la première formulation est supérieure à la seconde pour deux raisons.

  1. si vous mentionnez end_date dans une clause WHERE sans l'envelopper dans des calculs, votre requête peut exploiter un index sur cette colonne et s'exécuter plus rapidement.
  2. DATE(NOW()) et CURDATE() tous deux se réfèrent au premier moment d'aujourd'hui (minuit). Mais CURDATE() est un peu plus simple.