ฉันจะสอบถามฐานข้อมูล mysql เพื่อส่งคืนระเบียนทั้งหมดที่มีวันที่และเวลาที่เก่ากว่า 1 สัปดาห์ก่อนได้อย่างไร โปรดทราบว่าตารางวันที่และเวลาเก็บทุกอย่างใน UTC และฉันควรเปรียบเทียบด้วยตัวมันเอง
เพื่อความชัดเจน - ฉันกำลังมองหาแบบสอบถาม mysql ที่บริสุทธิ์
ฉันจะสอบถามฐานข้อมูล mysql เพื่อส่งคืนระเบียนทั้งหมดที่มีวันที่และเวลาที่เก่ากว่า 1 สัปดาห์ก่อนได้อย่างไร โปรดทราบว่าตารางวันที่และเวลาเก็บทุกอย่างใน UTC และฉันควรเปรียบเทียบด้วยตัวมันเอง
เพื่อความชัดเจน - ฉันกำลังมองหาแบบสอบถาม mysql ที่บริสุทธิ์
คำตอบ:
SELECT * FROM tbl WHERE datetime < NOW() - INTERVAL 1 WEEK
หากตารางของคุณจัดเก็บวันที่ในเขตเวลาที่ต่างจากที่NOW()
ส่งคืนคุณสามารถใช้UTC_TIMESTAMP()
แทนเพื่อรับการประทับเวลาใน UTC ได้
SELECT SUBDATE('2008-01-02', 7);
หรือ
SELECT SUBDATE(now(), INTERVAL 1 week);
ผลลัพธ์:
2550-12-26