sql >> Database teknologi >  >> RDS >> Mysql

Mysql Datediff-forespørgsel

Det ser ud til, at du prøver at gøre dette:

WHERE specific_date < (NOW() + 5 days)

Tænk først og fremmest godt over grænsetilfældene. Disse grænsetilfælde kan bide dine ankler i SQL. Vil du faktisk have

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

Gør din specific_date kolonner tidsstempler indeholder kun dage (dvs. datoer med klokkeslæt lig med midnat) eller indeholder de datoer og klokkeslæt? Hvis du vil opnå de resultater, du ønsker, skal du være forsigtig med disse detaljer.

Prøv i hvert fald dette:

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

Dette er en god måde at lave sådan et opslag på. Kolonneværdien står alene på den ene side af ulighedsprædikatet (<=). ) så mySQL kan lave en indeksområdescanning, hvis du har et indeks på kolonnen.

Datoregning i MySQL er ret fleksibel. Du kan gøre

   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

og så videre.



  1. MySQL-streng sidste indeks af

  2. Oracle identitet kolonne og indsæt i vælg

  3. Hvordan kan jeg bekræfte butikskoden i mysql og opdatere tabellen, hvis resultatet returnerer sandt

  4. Sådan genereres DB-testdata