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

ดึงข้อมูลที่ Timestamp อยู่ก่อน 15 วันใน MySQL

ใช้ 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);