2010-01-26 21 views
5

Xin chào các bạn, tôi có một bảng có một cột có dấu thời gian trong sqlite3. Nó được mặc định là CURRENT_TIMESTAMP sao cho khi hàng được chèn vào, thời gian hiện tại được chèn vào. Bây giờ tôi đang cố gắng tìm nạp các hàng đã được chèn vào 2 ngày trước hoặc nhiều hơn. Tôi tự hỏi nếu điều đó có ý nghĩa gì không.Nhận các Dòng Nơi cột dấu thời gian là 2 ngày Cũ

Đọc documentation tôi đến với:

SELECT * FROM test WHERE timestamp < strftime('%s', '-2 days')

nhưng dường như đó là sai. Tôi đã đưa ra truy vấn này vì điều này tương tự như cách tôi thực hiện kiểm tra trong mã thực tế của mình:

strtotime($timestamp) < strtotime("-2 days").

Nhưng tôi hy vọng rằng sqlite3 bao gồm một số kiểm tra tích hợp cho loại tình huống này.

Cảm ơn, tôi đánh giá cao mọi phản hồi.

EDIT: đặn nó ra: SELECT * FROM test WHERE timestamp < date('now', '-2 days')

Tôi sẽ giữ này mở trong trường hợp ai đó có thể đưa ra một cái gì đó tốt hơn.

+0

Sẽ làm, không biết đó là nghi thức đúng: D EDIT: Tôi sẽ chấp nhận nó trong hai ngày, đó là khi hệ thống sẽ cho phép tôi chấp nhận nó :) –

Trả lời

1

Vì vậy, tôi nghĩ rằng tôi đã tìm ra, nó hoạt động tốt cho tôi. Tôi không biết nếu điều này là cách tốt nhất để làm việc đó, nhưng có vẻ khá đơn giản và như tôi đã nói, hoạt động:

SELECT * FROM test WHERE timestamp < date('now', '-2 days') 
+0

Tài khoản này có múi giờ khác nhau không? –

4

trong postgres (tôi biết nó không phải là nền tảng của bạn, nhưng tôi đang đăng vào đây để người khác tham khảo), bạn cũng có thể làm như sau:

SELECT * FROM test WHERE my_timestamp < NOW() - INTERVAL '2 DAY'; 
+0

sẽ làm việc này postgresql my_timstamp bfore NOW() – Ashwin

0
SELECT * FROM test WHERE timestamp <= datetime('now','-2 days') 

nơi định dạng dữ liệu phải ở trong một trong những định dạng sau như đã đề cập trong liên kết

https://www.sqlite.org/lang_datefunc.html

Các vấn đề liên quan