ในขณะที่ฉันกำลังค้นคว้าข้อมูลนี้ฉันคิดว่ามันจะเป็นการดีที่จะแก้ไขโซลูชัน BETWEEN เพื่อแสดงตัวอย่างสำหรับวันที่ / สตริงที่ไม่คงที่โดยเฉพาะ แต่เป็นวันที่ที่ผันแปรหรือวันนี้เช่นCURRENT_DATE()
. สิ่งนี้จะใช้ดัชนีในคอลัมน์ log_timestamp
SELECT *
FROM some_table
WHERE
log_timestamp
BETWEEN
timestamp(CURRENT_DATE())
AND
timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL '86399.999999' SECOND_MICROSECOND));
ฉันทำวินาที / ไมโครวินาทีเพื่อหลีกเลี่ยงกรณี 12.00 น. ในวันถัดไป อย่างไรก็ตามคุณยังสามารถทำ `` INTERVAL '1 DAY' ผ่านตัวดำเนินการเปรียบเทียบสำหรับวิธีการที่ไม่เป็นมิตรกับผู้อ่านมากขึ้น:
SELECT *
FROM some_table
WHERE
log_timestamp >= timestamp(CURRENT_DATE()) AND
log_timestamp < timestamp(DATE_ADD(CURRENT_DATE(), INTERVAL 1 DAY));
ทั้งสองวิธีนี้จะใช้ดัชนีและควรดำเนินการได้เร็วขึ้นมาก ทั้งสองดูเหมือนจะเร็วพอ ๆ กัน