Immaginiamo una tabella con un campo datetime. Se volessimo filtrare la nostra query select per i record dell’anno passato possiamo procedere nel seguente modo:
select *
from table t
where
YEAR(t.date) = YEAR(current_date - INTERVAL 1 YEAR);
Abbiamo utilizzato le seguenti funzioni:
YEAR(dt)questa funzione restituisce un intero rappresentante l’anno del paremetro date o datetimedtCURRENT_DATE()questa funzione restituisce la data corrente nel formato'YYYY-MM-DD'INTERVALquesta funzione meriterebbe un articolo intero. È usata per effettuare calcoli conDATEeTIME. La sintassi è la seguente:INTERVALexpr unit Naturalmente, modificando il valore dell’espressioneINTERVAL 1 YEARè possibile selezionare anche record con anni precedenti.
NB: è possibile anche fare a meno di INTERVAL e usare una semplice sottrazione:
select *
from table t
where
YEAR(t.date) = YEAR(current_date)-1;
ma volevo approfittarne per introdurre l’espressione INTERVAL di cui parlerò con maggiori dettagli in un prossimo articolo.