Als ich dies recherchierte, dachte ich, es wäre schön, die ZWISCHEN-Lösung so zu ändern, dass ein Beispiel für ein bestimmtes nicht statisches / Zeichenfolgen-Datum, sondern ein variables Datum oder ein heutiges wie das heutige angezeigt wird CURRENT_DATE()
. Dies wird den Index für die Spalte log_timestamp verwenden.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Ich habe die Sekunden / Mikrosekunden gemacht, um den Fall um 12 Uhr am nächsten Tag zu vermeiden. Sie können jedoch auch "INTERVAL" 1 TAG "über Vergleichsoperatoren durchführen, um einen leserfreundlicheren Nicht-ZWISCHEN Ansatz zu erhalten:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Beide Ansätze verwenden den Index und sollten VIEL schneller arbeiten. Beide scheinen gleich schnell zu sein.