Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

คิวรี่ MySQL เลือกข้อมูลตามวันที่ (ไม่รวมเวลา) ด้วย DATE()


ใช้ฟังก์ชัน 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)