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

คิวรี่ MySQL ดึงข้อมูล DATETIME เก่ากว่า 1 สัปดาห์


ไวยากรณ์ดึงข้อมูลเก่ากว่า 1 สัปดาห์

ใช้ NOW() ลบ INTERVAL 1 WEEK:

SELECT * FROM your_table
WHERE date_column < NOW() - INTERVAL 1 WEEK;

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูลหลายช่วงเวลา

CREATE TABLE DatesOfOneWeek (ArrivalTime DATETIME);
INSERT INTO DatesOfOneWeek VALUES
(DATE_ADD(NOW(), INTERVAL 2 WEEK)),   -- อนาคต 2 สัปดาห์
('2018-11-04'),                        -- กว่า 1 เดือน
('2018-11-25'),                        -- กว่า 2 สัปดาห์
(DATE_ADD(NOW(), INTERVAL -1 WEEK)),   -- ก่อน 1 สัปดาห์
(DATE_ADD(NOW(), INTERVAL 1 WEEK));    -- อนาคต 1 สัปดาห์

ข้อมูลทั้งหมด (สมมติ NOW = 2018-12-06)

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-12-20 18:11:02 |  -- +2 สัปดาห์
| 2018-11-04 00:00:00 |  -- -1 เดือน
| 2018-11-25 00:00:00 |  -- -2 สัปดาห์
| 2018-11-29 18:11:40 |  -- -1 สัปดาห์
| 2018-12-13 18:11:46 |  -- +1 สัปดาห์
+---------------------+

คิวรี่ดึงข้อมูลเก่ากว่า 1 สัปดาห์

SELECT * FROM DatesOfOneWeek
WHERE ArrivalTime < NOW() - INTERVAL 1 WEEK;

ผลลัพธ์ (วันที่ < 2018-11-29)

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-11-04 00:00:00 |
| 2018-11-25 00:00:00 |
| 2018-11-29 18:11:40 |
+---------------------+

รูปแบบ INTERVAL อื่นๆ

INTERVAL 1 DAY
INTERVAL 3 MONTH
INTERVAL 1 YEAR
INTERVAL 6 HOUR
INTERVAL 30 MINUTE

ใช้กับ DATE Column

WHERE date_column < CURDATE() - INTERVAL 1 WEEK

ประสิทธิภาพ: หากคอลัมน์มี Index ให้หลีกเลี่ยง Function ด้านซ้าย (เช่น DATE()) ใช้รูปแบบ column < NOW() - INTERVAL ... แทนเพื่อให้ใช้ Index ได้