Kiedy to badałem, pomyślałem, że fajnie byłoby zmodyfikować rozwiązanie BETWEEN, aby pokazać przykład dla konkretnej niestatycznej / łańcuchowej daty, ale raczej zmiennej daty lub dzisiejszej, takiej jak CURRENT_DATE()
. To użyje indeksu na kolumnie log_timestamp.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Zrobiłem sekundy / mikrosekundy, aby uniknąć przypadku o godzinie 12 rano następnego dnia. Możesz jednak również wykonać `` INTERVAL '1 DAY' 'za pomocą operatorów porównania, aby uzyskać bardziej przyjazne dla czytelnika podejście, które nie jest BETWEEN:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Oba te podejścia wykorzystają indeks i powinny działać DUŻO szybciej. Oba wydają się być równie szybkie.