แบบสอบถาม MYSQL / วันที่ที่เก่ากว่า 1 สัปดาห์ที่ผ่านมา (วันที่ทั้งหมดใน UTC)


89

ฉันจะสอบถามฐานข้อมูล mysql เพื่อส่งคืนระเบียนทั้งหมดที่มีวันที่และเวลาที่เก่ากว่า 1 สัปดาห์ก่อนได้อย่างไร โปรดทราบว่าตารางวันที่และเวลาเก็บทุกอย่างใน UTC และฉันควรเปรียบเทียบด้วยตัวมันเอง

เพื่อความชัดเจน - ฉันกำลังมองหาแบบสอบถาม mysql ที่บริสุทธิ์

คำตอบ:


216
SELECT * FROM tbl WHERE datetime < NOW() - INTERVAL 1 WEEK

หากตารางของคุณจัดเก็บวันที่ในเขตเวลาที่ต่างจากที่NOW()ส่งคืนคุณสามารถใช้UTC_TIMESTAMP()แทนเพื่อรับการประทับเวลาใน UTC ได้


18
SELECT * FROM table WHERE DATEDIFF(NOW(),colname) > 7;

5
แม้ว่ารหัสนี้อาจตอบคำถาม แต่การให้บริบทเพิ่มเติมเกี่ยวกับสาเหตุและ / หรือวิธีที่รหัสนี้ตอบคำถามช่วยเพิ่มมูลค่าในระยะยาว
JAL

อันนี้สั้นกว่าควรใช้อันนี้ไหม
moeiscool

4
อาจจะสั้นกว่านี้ แต่จะใช้ดัชนีได้อย่างไร
swdev

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.