sql >> Databáze >  >> RDS >> Mysql

Dotaz Mysql Datediff

Vypadá to, že se pokoušíte udělat toto:

WHERE specific_date < (NOW() + 5 days)

Nejprve si pečlivě promyslete hraniční případy. Tyto hraniční případy vám mohou v SQL kousnout kotníky. Opravdu chcete

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

Udělejte si specific_date sloupce časová razítka obsahují pouze dny (tedy data s časy rovnými půlnoci) nebo obsahují data a časy? Pokud chcete dosáhnout požadovaných výsledků, musíte si na tyto detaily dávat pozor.

V každém případě zkuste toto:

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

Toto je dobrý způsob, jak provést takové vyhledávání. Hodnota sloupce stojí samostatně na jedné straně predikátu nerovnosti (<= ), takže mySQL může provést skenování rozsahu indexu, pokud máte index ve sloupci.

Aritmetika data v MySQL je poměrně flexibilní. Můžete to udělat

   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

a tak dále.



  1. Dotazování více databází najednou

  2. Mysql limit s příkazem in

  3. Počet na základě podmínky v SQL Server

  4. Aktualizujte data databáze pomocí tlačítka Odeslat