Bunu araştırırken, BETWEEN çözümünü belirli bir statik olmayan / dize tarihi için bir örnek gösterecek şekilde değiştirmenin iyi olacağını düşündüm, bunun yerine değişken bir tarih veya bugünkü gibi CURRENT_DATE()
. Bu , log_timestamp sütunundaki dizini KULLANACAKTIR.
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
Ertesi gün 12AM vakasından kaçınmak için saniye / mikrosaniye yaptım. Bununla birlikte, daha okuyucu dostu BETWEEN olmayan bir yaklaşım için karşılaştırma operatörleri aracılığıyla `` INTERVAL '1 GÜN' 'yapabilirsiniz:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
Bu yaklaşımların her ikisi de dizini kullanacak ve ÇOK daha hızlı işlemelidir. Her ikisi de eşit derecede hızlı görünüyor.