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.
- 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. DATE(NOW())
enCURDATE()
beide verwijzen naar het eerste moment van vandaag (middernacht). MaarCURDATE()
is een beetje eenvoudiger.