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

Requête MySQL Datediff

Il semble que vous essayez de faire ceci :

WHERE specific_date < (NOW() + 5 days)

Tout d'abord, réfléchissez bien aux cas limites. Ces cas limites peuvent vous mordre les chevilles en SQL. Voulez-vous vraiment

WHERE specific_date <= (NOW() + 5 days)

Faites votre specific_date les horodatages des colonnes ne contiennent que des jours (c'est-à-dire des dates avec des heures égales à minuit) ou contiennent-ils des dates et des heures ? Si vous souhaitez obtenir les résultats souhaités, vous devez faire attention à ces détails.

Dans tous les cas, essayez ceci :

WHERE specific_date <= DATE_ADD(NOW(), INTERVAL 5 DAY)

C'est une bonne façon de faire une telle recherche. La valeur de la colonne est isolée d'un côté du prédicat d'inégalité (le <= ) afin que mySQL puisse effectuer une analyse de plage d'index si vous avez un index sur la colonne.

L'arithmétique des dates dans MySQL est assez flexible. Vous pouvez faire

   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

et ainsi de suite.