2012-04-21 80 views
8

Hiện nay tôi có một bảng có chứa 4 ngày:Kiểm tra nếu ngày là hơn 3 tuổi trong PostgreSQL

CREATE TABLE dates (
date date 
); 

    11-mar-2008 
    25-now-2007 
    18-apr-2012 
    20-apr-2012 

Tôi muốn có một tuyên bố nơi tôi có thể tìm thấy tất cả các ngày đó lớn tuổi hơn ba tuổi. Đó sẽ là 2 ngày đầu tiên.

Cho đến nay tôi có:

SELECT * FROM dates WHERE date = now()::-1095; 

nhưng điều này không hoạt động.

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

15

Hãy thử điều này:

SELECT * FROM dates WHERE date < now() - '3 years'::interval; 

Ngoài ra, đặt tên cột của bạn date không phải là một thực hành tốt, vì đây là một từ dành riêng trong PostgreSQL.

+3

Để chọn nit, đây là từ dành riêng trong tiêu chuẩn SQL, mặc dù PostgreSQL không thấy cần thiết để đặt trước. Đối với tính di động và khả năng chống tương lai, nó vẫn có thể là khôn ngoan để tránh sử dụng nó như một định danh. http://www.postgresql.org/docs/current/interactive/sql-keywords-appendix.html – kgrittn

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