บทความนี้สาธิตการหาวันที่ในอนาคตที่ใกล้ที่สุดจากวันปัจจุบัน (Closest Future Date) โดยใช้ Subquery และ DATE(NOW())
สร้างตารางและข้อมูลวันที่จัดส่ง
mysql> CREATE TABLE DemoTable667 (ShippingDate DATETIME);
Query OK, 0 rows affected (0.46 sec)
mysql> INSERT INTO DemoTable667 VALUES('2019-01-31');
mysql> INSERT INTO DemoTable667 VALUES('2019-07-19');
mysql> INSERT INTO DemoTable667 VALUES('2019-07-23');
mysql> INSERT INTO DemoTable667 VALUES('2019-08-24');
สมมติวันนี้คือ 2019-07-25
คิวรีหาวันที่ในอนาคตที่ใกล้ที่สุด
mysql> SELECT ShippingDate
FROM DemoTable667
WHERE DATE(ShippingDate) = (
SELECT MIN(DATE(ShippingDate))
FROM DemoTable667
WHERE DATE(ShippingDate) > DATE(NOW())
);
ผลลัพธ์ (วันที่ 2019-07-23 ใกล้ที่สุดจาก 2019-07-25)
+---------------------+
| ShippingDate |
+---------------------+
| 2019-07-23 00:00:00 |
+---------------------+
คำอธิบาย:
- Subquery: หาวันที่น้อยที่สุด (
MIN) ของวันที่ที่มากกว่าวันนี้ (> DATE(NOW())) - Main Query: ดึงแถวที่มี ShippingDate ตรงกับวันที่ที่หาได้
DATE()- ดึงเฉพาะส่วนวันที่ เพื่อเปรียบเทียบเฉพาะวัน ไม่สนใจเวลา
วิธีทันสมัย (MySQL 8.0+): ใช้ Window Function ROW_NUMBER() จะมีประสิทธิภาพดีกว่า