Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql Datediff заявка

Изглежда, че се опитвате да направите това:

WHERE specific_date < (NOW() + 5 days)

Преди всичко помислете внимателно за граничните случаи. Тези гранични случаи могат да ви ухапят глезените в SQL. Наистина ли искате

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

Направете вашата specific_date колони времеви марки съдържат само дни (тоест дати с времена, равни на полунощ) или съдържат дати и часове? Ако искате да получите резултатите, които искате, трябва да внимавате за тези подробности.

Във всеки случай опитайте това:

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

Това е добър начин да направите такова търсене. Стойността на колоната стои самостоятелно от едната страна на предиката на неравенството (<= ), така че mySQL може да извърши сканиране на диапазона на индекси, ако имате индекс в колоната.

Аритметиката за дати в MySQL е доста гъвкава. Можете да направите

   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

и така нататък.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заключване на метаданни на MySQL 5.7, не можете да намерите процес на заключване?

  2. Как да създадете външен ключ, който също е първичен ключ в MySQL?

  3. Затваряне на MySQL връзката (PHP)

  4. SQL_NO_CACHE не работи

  5. междинна сума и обща за низове