SQL에서 날짜를 더하고 빼는 연산식에서 보통은 INTERVAL 함수를 사용합니다.
하지만 일반적으로 INTERVAL함수에는 '1 HOUR' 처럼 지정하여 사용할 수 있게 되어 있습니다.
변수를 사용하고자 CAST함수를 이용하는 방법을 정리해보았습니다.
보통의 쿼리의 경우는 아래와 같습니다.
SELECT date - INTERVAL '1 HOUR' AS TIME
FROM date_table
이렇게 하면 한 시간을 빼는 결과식이 나오게 됩니다.
SELECT date - INTERVAL time 'HOUR' AS TIME
FROM date_table
1대신 변수를 집어 넣고 싶은 경우가 생기게 됩니다.
time이란 변수를 1대신 넣고 싶지만 아래와 같은 구문 에러가 발생하게 됩니다.
ERROR: synctax error at or near "'HOUR'"
SELECT date - cast(time || 'hour' as INTERVAL) AS TIME
FROM date_table
해결방법은 바로 cast 함수를 사용하는 방식입니다.
cast 함수는 데이터형식을 다른 데이터형식으로 변환하는 역할을 하는데,
|| 이용하여 문자열끼리 연결하고 데이터형식을 INTERVAL로 변환 해주는 방법 입니다.
SELECT *
FROM table
WHERE sysdate - (INTERVAL '7' DAY) < UPDATE_DATE
table 테이블에 있는 UPDATE_DATE 컬럼을 이용 해, 현재 날짜보다 일주일 이전 데이터를 조회할 수 있다.
SELECT *
FROM table
WHERE sysdate - (INTERVAL '3' MONTH) < UPDATE_DATE
이와 같이 INTERVAL 함수를 이용해 몇 개월 간의 이용내역 등의 데이터를 쉽게 조회할 수 있다.
https://chobopark.tistory.com/304
https://m.blog.naver.com/fkdltmxlr3/222339928629