Tôi đang cố gắng nhận loại 'ngày' tương ứng với ngày đầu tiên của tháng hiện tại. Về cơ bản, một trong các bảng của tôi lưu trữ ngày, nhưng tôi muốn nó luôn là ngày đầu tiên của tháng, vì vậy tôi đang cố gắng tạo trình kích hoạt sẽ nhận ngay bây giờ() và sau đó thay thế ngày bằng 1.Nhận ngày đầu tiên của tháng ở bưu điện
26
A
Trả lời
57
Bạn có thể sử dụng biểu thức date_trunc('month', current_date)
. Thể hiện bằng câu lệnh SELECT. . .
select date_trunc('month', current_date)
2013-08-01 00:00:00-04
Để xóa thời gian, truyền đến nay.
select cast(date_trunc('month', current_date) as date)
2013-08-01
Nếu bạn chắc chắn rằng cột nên luôn cửa hàng chỉ là người đầu tiên của một tháng, bạn cũng nên sử dụng một ràng buộc CHECK.
create table foo (
first_of_month date not null
check (extract (day from first_of_month) = 1)
);
insert into foo (first_of_month) values ('2015-01-01'); --Succeeds
insert into foo (first_of_month) values ('2015-01-02'); --Fails
ERROR: new row for relation "foo" violates check constraint "foo_first_of_month_check" DETAIL: Failing row contains (2015-01-02).
17
date_trunc()
sẽ làm điều đó.
SELECT date_trunc('MONTH',now())::DATE;
http://www.postgresql.org/docs/current/static/functions-datetime.html
2
CHỌN TO_DATE ('2017/12/12', 'YYYY-MM-01');
2017-12-01
vấn đề với câu trả lời này là gì? – Victorqedu
có lẽ chỉ là bạn đã sử dụng dữ liệu tĩnh thay vì CURRENT_DATE()? –