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());