Dovresti ragionare sul criterio di selezione:
- nel primo caso chiedi che l'orario attuale sia minore o uguale a 11:59 PM, ma questo è un vincolo ridondante (l'orario di qualsiasi giorno è sempre minore od uguale a 11:59 PM)
- nel secondo caso chiedi che l'orario attuale sia maggiore od uguale a 00:00 AM, ma anche questo è sempre vero
Quindi in realtà il discriminante è semplicemente:
Codice:
if (current_hour >= 5)
{
interval = [today 5AM - tomorrow 5AM)
}
else {
interval = [yesterday 5AM - today 5AM)
}
Se ci pensi un attimo puoi osservare che a questo punto è più semplice sottrarre 5 ore al timestamp attuale e utilizzare il giorno associato al risultato nel criterio di selezione, incrementandolo di 5 ore:
Codice:
interval = [day(now - 5 hours) + 5 hours, day(now - 5 hours) + 5 hours + 1 day)
A questo punto puoi tradurre questo criterio direttamente in PHP usando le funzioni date e simili, oppure lavorare direttamente con SQL.