Câu trả lời:
Có, điều này không hoạt động trong PostgreSQL (giả sử cột " ngày " là của loại dữ liệu date
) Tại sao bạn không thử nó?
Định dạng ANSI SQL tiêu chuẩn sẽ là:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
Tôi thích định dạng đó hơn vì nó giúp mọi thứ dễ đọc hơn (nhưng nó cũng giống như vậy current_date - 10
).
interval '10 day'
là cú pháp Postgres. interval '10' day
là cú pháp dựa trên tiêu chuẩn SQL và cũng được hỗ trợ bởi Postgres
10
, không9
http://www.postgresql.org/docs/current/static/functions-datetime.html hiển thị các toán tử bạn có thể sử dụng để làm việc với ngày và giờ (và khoảng thời gian).
Vậy bạn muốn
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
Các toán tử / chức năng ở trên được ghi lại chi tiết:
Hiểu biết của tôi từ thử nghiệm của tôi (và PostgreSQL dox ) là các dấu ngoặc kép cần được thực hiện khác với các câu trả lời khác và cũng nên bao gồm "ngày" như thế này:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10 day';
Được minh họa ở đây (bạn sẽ có thể chạy điều này trên bất kỳ db Postgres nào):
SELECT DISTINCT current_date,
current_date - interval '10' day,
current_date - interval '10 days'
FROM pg_language;
Kết quả:
2013-03-01 2013-03-01 00:00:00 2013-02-19 00:00:00
Tôi sẽ kiểm tra các kiểu dữ liệu.
current_date có kiểu dữ liệu "date", 10 là một số và Table.date - bạn cần nhìn vào bảng của mình.
bạn cũng có thể sử dụng:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
between
phải có giá trị thấp nhất, vì vậy điều này sẽ được thực hiện chính xác là SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;