ใช้ฟังก์ชัน DATE() สำหรับเปรียบเทียบเฉพาะวันที่
ฟังก์ชัน DATE() จะดึงเฉพาะส่วนวันที่จากคอลัมน์ DATETIME หรือ TIMESTAMP ทำให้เปรียบเทียบกับวันที่ได้ง่ายขึ้น:
SELECT * FROM your_table
WHERE DATE(date_column) = 'target_date';
ตัวอย่างการใช้งาน
สร้างตารางและข้อมูล (เหมือนบทความก่อนหน้า)
CREATE TABLE AllRecordsFromadate (
Id INT,
Name VARCHAR(100),
Age INT,
AdmissionDate DATETIME
);
INSERT INTO AllRecordsFromadate VALUES
(101, 'John', 23, '2018-10-13'),
(102, 'Carol', 24, '2014-12-05 12:34:50'),
(103, 'Mike', 25, '2014-12-05 12:30:40'),
(104, 'Bob', 24, '2015-10-07 11:10:20'),
(105, 'Sam', 25, '2011-06-26 10:10:20');
คิวรี่หาข้อมูลวันที่ 5 ธันวาคม 2557 (ไม่สนใจเวลา)
SELECT * FROM AllRecordsFromadate
WHERE DATE(AdmissionDate) = '2014-12-05';
ผลลัพธ์
+------+-------+------+---------------------+
| Id | Name | Age | AdmissionDate |
+------+-------+------+---------------------+
| 102 | Carol | 24 | 2014-12-05 12:34:50 |
| 103 | Mike | 25 | 2014-12-05 12:30:40 |
+------+-------+------+---------------------+
วิธีอื่นที่ใช้ได้
-- ใช้ BETWEEN กับ DATE()
WHERE DATE(AdmissionDate) BETWEEN '2014-12-01' AND '2014-12-31'
-- ใช้ YEAR() และ MONTH()
WHERE YEAR(AdmissionDate) = 2014 AND MONTH(AdmissionDate) = 12
-- ใช้ LIKE (ไม่แนะนำสำหรับคอลัมน์ DATETIME ใหญ่)
WHERE AdmissionDate LIKE '2014-12-05%'
แนะนำ: ใช้ DATE() เพราะอ่านง่ายและใช้ Index ได้ (MySQL 5.7+ รองรับ Functional Index)