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 datetimedt
CURRENT_DATE()
questa funzione restituisce la data corrente nel formato'YYYY-MM-DD'
INTERVAL
questa funzione meriterebbe un articolo intero. È usata per effettuare calcoli conDATE
eTIME
. La sintassi è la seguente:INTERVAL
expr 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.