Vấn đề:
Bạn muốn hiển thị ngày hôm qua (không tính thời gian) trong cơ sở dữ liệu PostgreSQL.
Giải pháp 1:
SELECT current_date - INTEGER '1' AS yesterday_date;
Giả sử hôm nay là ngày 24 tháng 9 năm 2020, kết quả là:
today_date |
---|
2020-09-23 |
Thảo luận:
Để có được ngày của ngày hôm qua, bạn cần phải trừ đi một ngày từ ngày hôm nay. Sử dụng current_date
để có được ngày hôm nay. Lưu ý rằng bạn không cần dấu ngoặc ở cuối current_date
hàm số. Trong PostgreSQL, bạn có thể trừ hoặc cộng bất kỳ số ngày nào bằng cách sử dụng INTEGER
từ khóa. Ở đây, vì bạn cần trừ một ngày, bạn sử dụng - INTEGER '1'
để có được ngày hôm qua. Lưu ý rằng kết quả của phép tính này vẫn có loại cột date
.
Giải pháp 2:
SELECT (current_date - INTERVAL '1 day')::date AS yesterday_date;
Giả sử hôm nay là ngày 24 tháng 9 năm 2020, kết quả là:
today_date |
---|
2020-09-23 |
Thảo luận:
Nhận ngày hôm nay bằng cách sử dụng current_date
. Bạn cần trừ khoảng thời gian một ngày so với ngày hiện tại. Để thực hiện việc này, hãy sử dụng INTERVAL
từ khóa, tạo ra bất kỳ khoảng thời gian / ngày nào bạn muốn (tại đây, '1 day'
, trong PostgreSQL giống như 24 giờ). Trừ đi INTERVAL '1 day'
từ ngày hôm nay sẽ dẫn đến một cột được định dạng dưới dạng dấu thời gian, vì vậy bạn cần chuyển nó thành date
. Cách nhanh nhất để làm như vậy trong PostgreSQL là thêm ::date
vào toàn bộ biểu thức (nhớ đặt biểu thức trong dấu ngoặc đơn).
Tất nhiên, bạn có thể quay lại bất kỳ khoảng thời gian nào một cách dễ dàng. Đây là một ví dụ:
SELECT (current_date - INTERVAL '3 months 10 days')::date;
INTERVAL
cũng có thể được thêm đến một buổi hẹn hò. Vì vậy, đây là một cách nếu bạn muốn biết ngày mai:
SELECT (current_date + INTERVAL '1 day')::date AS tomorrow_date;