sql >> Database >  >> RDS >> Mysql

Mysql Datediff-query

Het lijkt erop dat u dit probeert:

WHERE specific_date < (NOW() + 5 days)

Denk allereerst goed na over de grensgevallen. Deze grensgevallen kunnen je enkels bijten in SQL. Wil je eigenlijk

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

Doe je specific_date kolommen tijdstempels bevatten alleen dagen (dat zijn datums met tijden gelijk aan middernacht) of bevatten ze datums en tijden? Als je de gewenste resultaten wilt krijgen, moet je voorzichtig zijn met die details.

Probeer in ieder geval dit:

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

Dit is een goede manier om zo'n opzoeking te doen. De kolomwaarde staat alleen aan één kant van het ongelijkheidspredikaat (de <= ) zodat mySQL een indexbereikscan kan uitvoeren als u een index op de kolom heeft.

Datumberekening in MySQL is vrij flexibel. Je kunt doen

   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

enzovoort.



  1. PHP MySQL-query met trefwoorden/gereserveerde woorden

  2. MySQL cartesiaans product tussen twee SELECT-instructies

  3. MYSQL PHP Geen database geselecteerd - kan fout niet vinden

  4. Mysql Tijdsverschil berekenen tussen tijdstempels in hetzelfde veld?