2월 10, 2024

[Redshift] interval values with month or year parts are not supported 에러 해결법

 Redshift, oracle, postgre 등 다양한 DB가 있지만 오늘은 Redshift를 사용했을 때, 

"interval values with month or year parts are not supported"


라는 에러 시 sql을 어떻게 수정할 수 있는지에 대하여 알아보도록 하겠다. 


내가 날린 sql은 

특정 칼럼 (데이터 타입: DATE) + interval '1 months' between '2023-01-01' and '2023-12-31'

이다. 

그런데 위와 같이 sql을 적으니 
interval values with month or year parts are not supported 라는 에러가 떴다. 

심지어 초반 sql 실행을 했을 때는 잘 돌아가는 듯 하다가
중반쯤 되니 에러를 뱉으면서 돌아가지 않아서 굉장히 의아했다.
 보통 syntax error시에 쿼리는 수행조차 되지 않기 때문에 이 경우는 뭐지하는 생각이 들었다. 

하지만 에러 그대로 redshift는 month와 year 에 대해서 interval values를 지원하지 않는다는 것이다. 

따라서 이 쿼리를 수정하기 위해서는, 

dateadd라는 function을 사용해주면 되는데,

위와 같이 +interval '1 months'를 표현하기 위해서는 

dateadd(month, 1, 원하는 칼럼)


이렇게 사용하면 된다. 

마찬가지로 1년을 더하고 싶으면

dateadd(year, 1, 원하는 칼럼)


이런형태로 적어주면 된다.