Porre una condizone per selezionare tutte le righe di una tabella con il valore di un campo data (o datetime) uguale al giorno precedente ad oggi è abbastanza semplice, basta utilzzare contemporaneamente le tre funzioni di MySql DATE(), DATE_SUB() e NOW().
La funzione DATE() è necessaria solamente se stiamo lavorando su un campo di tipo datetime, è superflua se il campo sul quale stiamo operando è di tipo date.
La funzione DATE_SUB() serve a sottrarre un intervallo ad una data. Come è semplice da intuire NOW() riporta da data e ora attuale (del server).
Vediamo la query:
SELECT c1,c2,.. FROM tab
WHERE
DATE(campoDateTime) = DATE(DATE_SUB(NOW(), INTERVAL 1 DAY))
In questo caso con la funzione DATE() estraiamo la data da campoDateTime, con NOW() ricaviamo data e ora corrente e mediante la funzione DATE_SUB() gli sottraiamo un intervallo di 1 giorno ( INTERVAL 1 DAY ), applichiamo nuovamente la funzione DATE() per trasformarlo in uguaglianza e abbiamo scritto la condizone che ci selezionerà solamente le righe con campoDateTime che contiene la data di ieri.
Attenzione, non stiamo parlando delle ultime 24 ore, ma di ieri.
E’ comunque abbastanza semplice la modifica per le 24 ore.