วิธีเปรียบเทียบคอลัมน์ DateTime โดยดูเฉพาะวันที่ (ไม่รวมเวลา) ใน MySQL
ใช้ฟังก์ชัน DATE() เพื่อแยกส่วนวันที่ออกมาจากคอลัมน์ DATETIME หรือ TIMESTAMP ก่อนทำการเปรียบเทียบ
SELECT * FROM yourTableName WHERE DATE(yourColumnName) = 'yourDateValue';
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> create table DemoTable (ArrivalTime datetime);
mysql> insert into DemoTable values('2019-01-31 02:34:56');
mysql> insert into DemoTable values('2019-04-09 18:20:58');
mysql> insert into DemoTable values('2019-05-11 19:45:23');
mysql> insert into DemoTable values('2019-02-03 21:10:02');
ข้อมูลทั้งหมด:
+---------------------+ | ArrivalTime | +---------------------+ | 2019-01-31 02:34:56 | | 2019-04-09 18:20:58 | | 2019-05-11 19:45:23 | | 2019-02-03 21:10:02 | +---------------------+
คิวรีเปรียบเทียบเฉพาะวันที่ (ค้นหาวันที่ 2019-04-09):
mysql> select * from DemoTable where DATE(ArrivalTime) = '2019-04-09';
ผลลัพธ์:
+---------------------+ | ArrivalTime | +---------------------+ | 2019-04-09 18:20:58 | +---------------------+
เทคนิคเพิ่มเติม: หากต้องการค้นหาช่วงวันที่ ให้ใช้ BETWEEN หรือเปรียบเทียบแบบช่วง:
SELECT * FROM yourTable WHERE DATE(yourColumn) BETWEEN '2019-01-01' AND '2019-12-31';
วิธีนี้ช่วยให้ดัชนี (Index) ทำงานได้ดีกว่าการใช้ฟังก์ชันบนคอลัมน์โดยตรงในบางกรณี