[SQL] INTERVAL 함수

강민경·2024년 10월 29일

SQL에서 날짜를 더하고 빼는 연산식에서 보통은 INTERVAL 함수를 사용합니다.
하지만 일반적으로 INTERVAL함수에는 '1 HOUR' 처럼 지정하여 사용할 수 있게 되어 있습니다.
변수를 사용하고자 CAST함수를 이용하는 방법을 정리해보았습니다.





보통의 쿼리의 경우는 아래와 같습니다.

INTERBVAL 사용 예

SELECT date - INTERVAL '1 HOUR' AS TIME
  FROM date_table

이렇게 하면 한 시간을 빼는 결과식이 나오게 됩니다.





INTERVAL 잘못된 변수 사용

SELECT date - INTERVAL time 'HOUR' AS TIME
  FROM date_table

1대신 변수를 집어 넣고 싶은 경우가 생기게 됩니다.
time이란 변수를 1대신 넣고 싶지만 아래와 같은 구문 에러가 발생하게 됩니다.

ERROR: synctax error at or near "'HOUR'"



INTERVAL 변수 사용 방법

SELECT date - cast(time || 'hour' as INTERVAL) AS TIME
  FROM date_table

해결방법은 바로 cast 함수를 사용하는 방식입니다.
cast 함수는 데이터형식을 다른 데이터형식으로 변환하는 역할을 하는데,
|| 이용하여 문자열끼리 연결하고 데이터형식을 INTERVAL로 변환 해주는 방법 입니다.




예제

1. 지난 일주일 간의 데이터 조회

SELECT *
  FROM table
 WHERE sysdate - (INTERVAL '7' DAY) < UPDATE_DATE

table 테이블에 있는 UPDATE_DATE 컬럼을 이용 해, 현재 날짜보다 일주일 이전 데이터를 조회할 수 있다.

2. 지난 3개월간의 데이터 조회

SELECT * 
  FROM table 
 WHERE sysdate - (INTERVAL '3' MONTH) < UPDATE_DATE

이와 같이 INTERVAL 함수를 이용해 몇 개월 간의 이용내역 등의 데이터를 쉽게 조회할 수 있다.




참고 사이트

https://chobopark.tistory.com/304
https://m.blog.naver.com/fkdltmxlr3/222339928629

profile
간단한 기록

0개의 댓글