[PostgreSQL] 날짜 계산(Date/Timestamp/Interval)

hyeji·2023년 2월 13일
0

Date type에는 숫자를 더하거나 빼서 날짜 계산을 할 수 있다.
(but 곱하기나 나누기는 할 수 없음)

select to_date('2022-02-13', 'yyyy-mm-dd')+2
-> 2022-02-15

하지만 Timestamp에서 숫자를 더하거나 빼면 오류가 발생한다.

select to_timestamp('2022-02-13 14:36:25', 'yyyy-mm-dd hh24:mi:ss')-2
-> SQL Error [42883]: 오류: 연산자 없음: timestamp with time zone + integer

이럴 때 interval type을 이용해 연산을 수행한다.

select to_timestamp('2022-02-13 14:36:25', 'yyyy-mm-dd hh24:mi:ss') + interval'2 days'
-> 2022-02-15 14:36:25

select to_timestamp('2022-02-13 14:36:25', 'yyyy-mm-dd hh24:mi:ss') + interval'6 hours'
-> 2022-02-13 20:36:25

select to_timestamp('2022-02-13 14:36:25', 'yyyy-mm-dd hh24:mi:ss') + interval'2 days 6 hours'
-> 2022-02-15 20:36:25
--interval '2 days'
select to_timestamp('2022-02-13 14:36:25', 'yyyy-mm-dd hh24:mi:ss') + interval'2 days'
-> 2022-02-15 14:36:25

--interval '2' day
select to_timestamp('2022-02-13 00:00:00', 'yyyy-mm-dd hh24:mi:ss') + interval'2' day
-> 2022-02-15 00:00:00

--interval '2' days 로 할 경우
select to_timestamp('2022-02-13 00:00:00', 'yyyy-mm-dd hh24:mi:ss') + interval'2' days
-> 2022-02-15 00:00:02.000

만약 date type에 interval을 사용하면 timestamp 형식으로 바뀐다.

select to_date('2022-02-13', 'yyyy-mm-dd') + interval '7 days'
-> 2022-02-20 00:00:00

select pg_typeof(to_date('2022-02-13', 'yyyy-mm-dd') + interval '7 days')
-> timestamp
profile
Data Analyst

0개의 댓글