Mentre stavo cercando questo, ho pensato che sarebbe stato bello modificare la soluzione BETWEEN per mostrare un esempio per una particolare data non statica / stringa, ma piuttosto una data variabile, o odierna come CURRENT_DATE()
. Questo UTILIZZERÀ l'indice nella colonna log_timestamp.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Ho fatto i secondi / microsecondi per evitare il caso 12AM il giorno successivo. Tuttavia, potresti anche fare "INTERVALLO" 1 GIORNO "tramite operatori di confronto per un approccio non BETWEEN più intuitivo:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Entrambi questi approcci useranno l'indice e dovrebbero funzionare MOLTO più velocemente. Entrambi sembrano essere altrettanto veloci.