2013-08-05 3 views
26

나는 현재 달의 첫날에 해당하는 '날짜'유형을 얻으려고합니다. 기본적으로 내 테이블 중 하나에 날짜가 저장되지만이 날짜가 항상 그 달의 첫 번째 날짜가되기를 원하므로 지금()에 도달 한 다음 그 날짜를 1로 바꿀 방아쇠를 만들려고합니다.포스트 그레스의 첫 번째 날짜 가져 오기

답변

57

date_trunc('month', current_date)을 사용할 수 있습니다. SELECT 문으로 보여줍니다. . .

select date_trunc('month', current_date) 
2013-08-01 00:00:00-04 

시간을 제거하려면 날짜를 캐스트하십시오.

select cast(date_trunc('month', current_date) as date) 
2013-08-01 

특정 경우 해당 열이 항상 가게는 한 달의 첫 번째, 당신은 또한 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). 
2

SELECT TO_DATE ('2017년 12월 12일', 'YYYY-MM-01');

2017년 12월 1일

+0

이 답변의 문제는 무엇인가? – Victorqedu

+1

아마도 CURRENT_DATE()가 아닌 정적 데이터를 사용하셨습니까? –

관련 문제