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

MySQL: SELECT ข้อมูลย้อนหลัง N วัน (DATE_SUB / DATE_ADD)

สามวิธีให้ผลลัพธ์เท่ากัน

1. DATE_ADD กับ INTERVAL ลบ

SELECT DATE_ADD(CURDATE(), INTERVAL -6 DAY);

2. DATE_SUB (อ่านง่ายกว่า)

SELECT DATE_SUB(CURDATE(), INTERVAL 6 DAY);

3. ลบโดยตรง

SELECT CURDATE() - INTERVAL 6 DAY;

ตัวอย่างผลลัพธ์ (สมมติวันนี้ 2018-11-26)

+-------------------------------------+
| date_add(curdate(), interval -6 day) |
+-------------------------------------+
| 2018-11-20                          |
+-------------------------------------+
+------------------------------------+
| date_sub(curdate(), interval 6 day) |
+------------------------------------+
| 2018-11-20                         |
+------------------------------------+
+--------------------------+
| curdate() - interval 6 day |
+--------------------------+
| 2018-11-20               |
+--------------------------+

ใช้ใน WHERE Clause (Query ย้อนหลัง 7 วัน)

SELECT * FROM orders 
WHERE order_date >= DATE_SUB(CURDATE(), INTERVAL 7 DAY);

สรุป

  • DATE_SUB: อ่านง่ายที่สุด สำหรับการลบ
  • DATE_ADD กับลบ: ใช้ได้แต่สับสน
  • Operator -: สั้นที่สุด
  • ทั้งสาม ใช้กับ CURDATE() (Date) หรือ NOW() (DateTime) ได้