sql >> Database >  >> RDS >> Mysql

Hoe kan ik dagen toevoegen aan een datum in MYSQL in een query?

Het lijkt erop dat je rijen wilt waar end_date is later dan vijf dagen geleden.

De beste manier om dat te krijgen is met

 WHERE end_date >= CURDATE() - INTERVAL 5 DAY

Het toevoegen van gehele getallen aan datums werkt niet in MySQL (het is een Oracle-ding). U moet dus de INTERVAL n unit . gebruiken syntaxis.

U zult zien dat mijn WHERE-clausule hierboven functioneel gelijk is aan

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

Maar de eerste formulering is om twee redenen superieur aan de tweede.

  1. als je end_date vermeldt in een WHERE-component zonder deze in berekeningen te wikkelen, kan uw query een index op die kolom exploiteren en sneller worden uitgevoerd.
  2. DATE(NOW()) en CURDATE() beide verwijzen naar het eerste moment van vandaag (middernacht). Maar CURDATE() is een beetje eenvoudiger.


  1. Django:sqlite voor dev, mysql voor prod?

  2. Wat is de codeer(<kolomnaam>, 'escape') PostgreSQL-equivalent in Java?

  3. MySQL SELECT Gedupliceerde rijen van OpenCarts DataBase

  4. Kopieer gegevens van het ene veld naar het andere op elke rij