ใช้ DATE_SUB(NOW(), INTERVAL 15 DAY) เพื่อคำนวณวันที่ 15 วันที่แล้ว แล้วกรองด้วยเงื่อนไข <
ตัวอย่างการใช้งาน
1. สร้างตารางและข้อมูล (สมมติวันนี้ 2019-07-03)
mysql> create table DemoTable (ArrivalDate datetime);
mysql> insert into DemoTable values('2019-07-03'), ('2019-06-20'), ('2019-06-15'), ('2018-06-11'), ('2018-06-01');
2. Query ดึงข้อมูลก่อน 15 วัน
mysql> select * from DemoTable
-> where ArrivalDate < DATE_SUB(NOW(), INTERVAL 15 DAY)
-> order by ArrivalDate DESC;
ผลลัพธ์
+---------------------+ | ArrivalDate | +---------------------+ | 2019-06-15 00:00:00 | | 2018-06-11 00:00:00 | | 2018-06-01 00:00:00 | +---------------------+
รูปแบบ INTERVAL อื่นๆ
DATE_SUB(NOW(), INTERVAL 1 DAY) -- 1 วันก่อน DATE_SUB(NOW(), INTERVAL 1 WEEK) -- 1 สัปดาห์ก่อน DATE_SUB(NOW(), INTERVAL 1 MONTH) -- 1 เดือนก่อน DATE_SUB(NOW(), INTERVAL 1 YEAR) -- 1 ปีก่อน DATE_SUB(NOW(), INTERVAL 6 HOUR) -- 6 ชั่วโมงก่อน
คำแนะนำประสิทธิภาพ
- หลีกเลี่ยงฟังก์ชันบนคอลัมน์ (เช่น
DATE(ArrivalDate) < ...) เพื่อให้ใช้ Index ได้ - เขียนเป็น
ArrivalDate < DATE_SUB(NOW(), INTERVAL 15 DAY)แทน - สร้าง Index บนคอลัมน์ ArrivalDate
CREATE INDEX idx_arrival ON DemoTable(ArrivalDate);