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

ค้นหาแถวที่มีวันที่เก่ากว่า 1 สัปดาห์ใน MySQL ด้วย DATEDIFF()

บทนำ

การค้นหาข้อมูลที่มีวันที่เก่ากว่าวันปัจจุบันจำนวนวันที่กำหนด สามารถใช้ฟังก์ชัน 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 วันพอดี (ไม่มากกว่า)