การค้นหาช่วงวันที่ด้วย BETWEEN และ CURDATE()
เพื่อหาบันทึกที่มีวันที่อยู่ในช่วงวันนี้ถึงอีก 2 วันข้างหน้า เราใช้ BETWEEN ร่วมกับ CURDATE() และ INTERVAL
สร้างตารางและเพิ่มข้อมูล (สมมติวันนี้คือ 2019-08-18)
mysql> CREATE TABLE DemoTable (ExpiryDate DATE);
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('2018-01-21');
mysql> INSERT INTO DemoTable VALUES('2019-08-20');
mysql> INSERT INTO DemoTable VALUES('2018-08-20');
mysql> INSERT INTO DemoTable VALUES('2019-08-21');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------------+
| ExpiryDate |
+------------+
| 2018-01-21 |
| 2019-08-20 |
| 2018-08-20 |
| 2019-08-21 |
+------------+
4 rows in set (0.00 sec)
คำสั่งค้นหาวันหมดอายุภายใน 2 วัน (รวมวันนี้)
mysql> SELECT * FROM DemoTable
WHERE ExpiryDate BETWEEN CURDATE() AND CURDATE() + INTERVAL 2 DAY;
ผลลัพธ์ (เมื่อวันนี้คือ 2019-08-18):
+------------+
| ExpiryDate |
+------------+
| 2019-08-20 |
+------------+
1 row in set (0.00 sec)
คำอธิบาย
CURDATE(): คืนคาวันที่ปัจจุบัน (ไม่รวมเวลา)CURDATE() + INTERVAL 2 DAY: วันที่ 2 วันข้างหน้าBETWEEN ... AND ...: รวมทั้งค่าขอบเขต (inclusive)- ในตัวอย่าง วันหมดอายุ 2019-08-20 อยู่ในช่วง 18-20 สิงหาคม จึงถูกเลือก