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

คิวรี MySQL หาวันที่ใกล้ที่สุดจากวันนี้ (Closest Future Date)

บทความนี้สาธิตการหาวันที่ในอนาคตที่ใกล้ที่สุดจากวันปัจจุบัน (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() จะมีประสิทธิภาพดีกว่า