PostgreSQL, ngày kiểm tra liên quan đến “hôm nay”


103

Đang tự hỏi nếu ai đó có thể hỗ trợ một số Postgres. Tôi có một bảng có một cột được gọi mydatelà loại ngày postgres. Tôi muốn làm điều gì đó như:

SELECT * FROM MyTable WHERE mydate > [Today-1year]

Tôi chưa bao giờ sử dụng Postgres trước đây và tôi chắc chắn rằng tôi chỉ cần biết tên của một số hàm - Tôi sẽ sẵn lòng tự tra cứu tài liệu tham khảo. ai đó có thể chỉ cho tôi phương hướng đúng không?

Cảm ơn!


2
Đối với hồ sơ, tài liệu ở đây - cần một chút làm quen, nhưng nó cực kỳ toàn diện.
Vụ kiện của Fund Monica

Câu trả lời:


173
select * from mytable where mydate > now() - interval '1 year';

Nếu bạn chỉ quan tâm về ngày và không thời gian, thay thế current_datechonow()


Đây là hoàn hảo! Cảm ơn
JustGage

1
Lưu ý rằng đó now()là dấu thời gian, vì vậy phạm vi này cũng sẽ chỉ bao gồm một phần của ngày từ chính xác một năm trước và một phần của ngày hôm nay. Nếu bạn muốn lọc vào đủ ngày, hãy truyền now()::datenhư Alex Howansky đề xuất.
tokenizer_fsj

1
@tokenizer_fsj sử dụng current_datethay vìnow()
Paul Tomblin

66

Tôi nghĩ điều này sẽ làm được:

SELECT * FROM MyTable WHERE mydate > now()::date - 365;

10
Lưu ý rằng không giống như interval '1 year', điều này sẽ không tôn trọng các năm nhuận. Đó có thể không phải là mối quan tâm của bạn, nhưng nếu có, hãy sử dụng câu trả lời của tôi.
Paul Tomblin 13/10/10

Đây phải là câu trả lời được chấp nhận. now()trả về một dấu thời gian, vì vậy sau khi trừ đi '1 day', bạn sẽ có một dấu thời gian có khả năng sẽ lọc ra một phần trong ngày mà bạn muốn truy vấn. Hầu hết mọi người muốn lọc vào một ngày duy nhất và do đó, việc sử dụng now()::datehoặc CURRENT_DATElà cần thiết.
tokenizer_fsj

9

Điều này sẽ cung cấp cho bạn ngày hiện tại trừ đi 1 năm:

select now() - interval '1 year';

5

Bạn cũng có thể kiểm tra bằng cách sử dụng age()chức năng

select * from mytable where age( mydate, now() ) > '1 year';

age() sẽ trả về một khoảng thời gian.

Ví dụ age( '2015-09-22', now() )sẽ trở lại-1 years -7 days -10:56:18.274131

Xem tài liệu postgresql


Tôi nói age()là một chức năng PostgreSQL chỉ (2018/10/05)
loxaxs

Như id câu hỏi @loxaxs
hd1
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.