บทนำ
การค้นหาข้อมูลที่มีวันที่เก่ากว่าวันปัจจุบันจำนวนวันที่กำหนด สามารถใช้ฟังก์ชัน DATEDIFF() ซึ่งคืนค่าความต่างของวันระหว่างสองวันที่
วันที่ปัจจุบัน (สมมติ)
mysql> SELECT NOW();
+---------------------+
| NOW() |
+---------------------+
| 2019-06-09 19:15:56 |
+---------------------+
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> ShippingDate DATETIME
-> );
Query OK, 0 rows affected (0.66 sec)
mysql> INSERT INTO DemoTable VALUES('2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-06-02');
mysql> INSERT INTO DemoTable VALUES('2019-06-14');
mysql> INSERT INTO DemoTable VALUES('2019-05-21');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+---------------------+
| ShippingDate |
+---------------------+
| 2019-06-01 00:00:00 |
| 2019-06-02 00:00:00 |
| 2019-06-14 00:00:00 |
| 2019-05-21 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)
คำสั่งค้นหาแถวที่เก่ากว่า 7 วัน (จากวันที่ 2019-06-09)
mysql> SELECT * FROM DemoTable
-> WHERE DATEDIFF(NOW(), ShippingDate) > 7;
ผลลัพธ์
+---------------------+
| ShippingDate |
+---------------------+
| 2019-06-01 00:00:00 |
| 2019-05-21 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)
คำอธิบาย
DATEDIFF(date1, date2)คืนค่าdate1 - date2ในหน่วยวัน- เงื่อนไข
> 7หมายถึง วันที่เก่ากว่าวันปัจจุบันมากกว่า 7 วัน - วันที่ 2019-06-02 ไม่ถูกเลือก เพราะต่างจาก 2019-06-09 เพียง 7 วันพอดี (ไม่มากกว่า)