본문 바로가기
Database

[SQL] INTERVAL함수에 변수 사용방법

by GoodDayDeveloper 2022. 9. 19.
반응형

 

SQL에서 날짜를 더하고 빼는 연산식에서 보통은 INTERVAL 함수를 사용합니다.

하지만 일반적으로  INTERVAL함수에는 '1 HOUR' 처럼 지정하여 사용할 수 있게 되어 있습니다.

변수를 사용하고자  CAST함수를 이용하는 방법을 정리해보았습니다.

 

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

 

 

 

 

INTERVAL 사용 예

 

1
2
3
4
5
SELECT 
  date - INTERVAL '1 HOUR' AS TIME 
FROM 
  date_table
 
cs

 

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

 

 

 

 

 

 

INTERVAL  잘못된 변수 사용

 

 

 

하지만 1 대신 변수를 집어 넣고 싶은 경우가 생기게 됩니다. 

이렇게 말이죠.

 

1
2
3
4
5
SELECT 
  date - INTERVAL time 'HOUR' AS TIME 
FROM 
  date_table
 
cs

 

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

다른 방법이 필요할 것 같네요..

 

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

 

 

 

 

반응형

 

 

 

 

 

INTERVAL  변수 사용 방법

 

1
2
3
4
5
SELECT 
  date -  cast(time || 'hour' as INTERVAL) AS TIME 
FROM 
  date_table
 
cs

 

해결방법은 바로 cast 함수를 사용하는 방식입니다.

cast 함수는 데이터형식을 다른 데이터형식으로 변환하는 역활을 하는데,

||을 이용하여 문자열끼리 연결하고 데이터형식을 INTERVAL로 변환해주는 방법입니다.

 

 

 

 

 

 

사용 예시

 

1
2
3
4
5
6
SELECT 
  TO_CHAR(TO_TIMESTAMP(CONCAT(date, ' ' ,time),'YYYY-MM-DD HH24:MI:SS'- cast(time_zone || 'hour' as INTERVAL)  , 'YYYY-MM-DD HH24:MI:SS') AS TIME , 
  CONCAT(date, ' ' ,time) AS refrence,
FROM 
  date_table
 
cs

 

저 같은 경우는 date와 time의 각각의 컬럼을 붙여서 데이터 형식으로 변환한 뒤,

time_zone의 컬럼을 이용하여 INTERVAL로 시간 계산한 방식입니다.

 

 

 

 

반응형

댓글