การกรองวันที่เป็นวันนี้หรือพรุ่งนี้ด้วย IN() และ CURDATE()
ใช้ CURDATE() สำหรับวันนี้ และ CURDATE() + INTERVAL 1 DAY สำหรับพรุ่งนี้ ร่วมกับ IN เพื่อกรองวันที่ในคอลัมน์ DATE
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (AdmissionDate DATE);
Query OK, 0 rows affected (0.87 sec)
mysql> INSERT INTO DemoTable VALUES('2019-08-24');
mysql> INSERT INTO DemoTable VALUES('2019-08-25');
mysql> INSERT INTO DemoTable VALUES('2019-08-20');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24 |
| 2019-08-25 |
| 2019-08-20 |
+---------------+
3 rows in set (0.00 sec)
คำสั่งแสดงวันที่เป็นวันนี้หรือพรุ่งนี้
mysql> SELECT * FROM DemoTable
WHERE AdmissionDate IN (CURDATE(), CURDATE() + INTERVAL 1 DAY);
ผลลัพธ์ (สมมติวันนี้ 2019-08-24):
+---------------+
| AdmissionDate |
+---------------+
| 2019-08-24 |
| 2019-08-25 |
+---------------+
2 rows in set (0.00 sec)
คำอธิบาย
CURDATE(): วันที่ปัจจุบัน (ไม่รวมเวลา)CURDATE() + INTERVAL 1 DAY: พรุ่งนี้IN (val1, val2): ตรงกับค่าใดค่าหนึ่งในรายการ- ใช้ได้กับคอลัมน์ DATE, DATETIME, TIMESTAMP (MySQL แปลงอัตโนมัติ)
- มีประสิทธิภาพดีกว่า BETWEEN สำหรับค่าที่ไม่ต่อเนื่อง