Truy vấn MYSQL / các ngày cũ hơn 1 tuần trước (tất cả các ngày giờ theo UTC)


89

Làm cách nào để truy vấn một db mysql để trả về tất cả các bản ghi có ngày giờ cũ hơn 1 tuần trước. Lưu ý rằng bảng ngày giờ lưu trữ mọi thứ theo UTC và tôi nên so sánh nó trong chính bảng đó.

Chỉ cần nói rõ - tôi đang tìm một truy vấn mysql thuần túy.

Câu trả lời:


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

Nếu bảng của bạn lưu trữ lịch ngày ở múi giờ khác với múi giờ NOW()trả về, UTC_TIMESTAMP()thay vào đó bạn có thể sử dụng để lấy dấu thời gian theo UTC.


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

5
Mặc dù mã này có thể trả lời câu hỏi, nhưng việc cung cấp thêm ngữ cảnh liên quan đến lý do và / hoặc cách mã này trả lời câu hỏi sẽ cải thiện giá trị lâu dài của nó.
JAL

cái này ngắn hơn, tôi có nên sử dụng cái này không?
moeiscool

4
Có thể điều này ngắn hơn nhưng làm thế nào nó có thể sử dụng một chỉ mục.
swdev

13
SELECT SUBDATE('2008-01-02', 7);

HOẶC LÀ

SELECT SUBDATE(now(), INTERVAL 1 week);

Kết quả:

2007-12-26

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.