Postgresql - Date, Time


DB 에서 값을 추출하거나 유효한 값을 찾거나 하면 생각보다 시간 관련하여 많이 쓰는 것 같다. 그 중에서 좀 헷갈리는 함수에 대해 적어두려 한다.

시간 값 가져오기

Postgresql 기준, 시간값을 제공해주는 기능은 많다.

select current_timestamp; -- 현재 타임스탬프

select now();             -- 위와 동일

select current_date;      -- 현재 날짜

select current_time;      -- 현재 시간

연산, 문자열 - 시간값 변환

시간값에 대한 연산 및 변환 기능이다. 연산은 interval 를 사용하면 쉽게 할 수 있다.

-- 현재 시간값에서 1일 빼기 
select current_timestamp - interval '1 day';

-- 현재 시간값에서 1달 더하기
select current_timestamp + interval '1 month';

-- 시간값 끼리 계산
select now() - (now() - interval '10 year');    

-- 현재 시간값에서 'YYYY-MM-DD' 포맷으로 변환
select to_char(now(), 'YYYY-MM-DD');            

-- 해당 포맷의 문자열을 시간값으로 변환
select to_timestamp('20210619', 'YYYYMMDD')

date 와 timestamp 간의 변환은 그냥 캐스팅으로 가능하다.

그 외

이 외 자주 사용하는 함수는 extract , date_trunc 이 있다.

  • extract: 특정 단위 추출
  • date_trunc: 특정 단위 미만 시간값 버림
-- 현재 시간값에서 day 값만 추출
select extract(day from now());

-- 현재 시간값에서 month 값만 추출
select extract(month from now());

-- 날짜 미만 시간값 버림
select date_trunc('day', now());