Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę dodać dni do daty w MYSQL w zapytaniu?

Wygląda na to, że chcesz wiersze, w których end_date jest później niż pięć dni temu.

Najlepszym sposobem na osiągnięcie tego jest

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Biznes dodawania liczb całkowitych do dat nie działa w MySQL (to rzecz Oracle). Musisz więc użyć jednostki INTERVAL n unit składnia.

Zauważysz, że moja klauzula WHERE powyżej jest funkcjonalnie równoważna z

 WHERE DATE(end_date) + INTERVAL 5 DAY >= DATE(NOW())

Ale pierwsze sformułowanie jest lepsze od drugiego z dwóch powodów.

  1. jeśli wspomnisz o end_date w klauzuli WHERE bez zawijania jej w obliczenia, twoje zapytanie może wykorzystać indeks w tej kolumnie i może działać szybciej.
  2. DATE(NOW()) i CURDATE() oba odnoszą się do pierwszej chwili dnia dzisiejszego (północ). Ale CURDATE() jest nieco prostsze.


  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 LIKE vs LOCATE

  2. Jak utworzyć indeks DESC w MySQL?

  3. Uzyskiwanie połączenia nie powiodło się:php_network_getaddresses:nie powiodło się getaddrinfo:nazwa lub usługa nie jest znana

  4. Aplikacja OpenShift nie może połączyć się z MySQL :JDBCConnectionException:Nie można otworzyć połączenia

  5. ORM, C# i MySQL - Take2