บทนำ
การกรองข้อมูลที่มีวันที่ตรงกับวันปัจจุบัน (Date portion only, ไม่สนใจเวลา) ใช้ฟังก์ชัน CURDATE() ร่วมกับ DATE() เพื่อแปลง DATETIME เป็น DATE
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> DueDate DATE
-> );
Query OK, 0 rows affected (1.35 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-14');
mysql> INSERT INTO DemoTable VALUES('2019-06-15');
mysql> INSERT INTO DemoTable VALUES('2019-06-16');
mysql> INSERT INTO DemoTable VALUES('2018-01-16');
mysql> INSERT INTO DemoTable VALUES('2018-07-16');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์ (สมมติวันนี้ 2019-06-16)
+------------+
| DueDate |
+------------+
| 2019-06-14 |
| 2019-06-15 |
| 2019-06-16 |
| 2018-01-16 |
| 2018-07-16 |
+------------+
5 rows in set (0.00 sec)
คำสั่งค้นหาแถวที่ DueDate = วันนี้
mysql> SELECT * FROM DemoTable WHERE DATE(DueDate) = CURDATE();
ผลลัพธ์
+------------+
| DueDate |
+------------+
| 2019-06-16 |
+------------+
1 row in set (0.03 sec)
คำอธิบาย
CURDATE()คืนค่าวันปัจจุบันในรูปแบบ DATE (YYYY-MM-DD)DATE(DueDate)แปลง DATETIME/TIMESTAMP เป็น DATE (ตัดเวลาออก) - สำคัญหากคอลัมน์เป็น DATETIME- หากคอลัมน์เป็น DATE แล้ว ใช้
DueDate = CURDATE()โดยตรงได้
ฟังก์ชันวันที่ที่เกี่ยวข้อง
| ฟังก์ชัน | คืนค่า | ตัวอย่าง |
|---|---|---|
| CURDATE() | วันปัจจุบัน (DATE) | 2024-01-15 |
| CURRENT_DATE | เท่ากับ CURDATE() | 2024-01-15 |
| NOW() | วันที่และเวลาปัจจุบัน (DATETIME) | 2024-01-15 10:30:45 |
| CURRENT_TIMESTAMP | เท่ากับ NOW() | 2024-01-15 10:30:45 |
| CURTIME() | เวลาปัจจุบัน (TIME) | 10:30:45 |
การประยุกต์: ช่วงวันที่
-- วันนี้ถึง 7 วันข้างหน้า
WHERE DueDate BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY)
-- 7 วันที่ผ่านมา จนถึงวันนี้
WHERE DueDate BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()