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