큐브리드를 사용하다가 날짜형과 관련하여 처리가 안되는 부분이 있어서 질문드립니다.
select LAST_DAY(sysdate) + 7 - to_number(TO_CHAR(LAST_DAY(sysdate), 'd')) from db_root
위와같은 쿼리를 실행시키면 오류가 납니다.
오류 설명:
Semantic: '-' operator is not defined on types date and numeric. select last_day( SYS_DATE )+7- to_number( to_char( last_day( SYS_DATE ), 'd', 'en_US')) from db_root db_root where rownum between 1 and 5000
to_number(TO_CHAR(LAST_DAY(sysdate), 'd')) 이부분이 현재 2011년 2월이기때문에 2를 반환합니다.
결국
select LAST_DAY(sysdate) + 7 -2 from db_root 와 같은 쿼리인데 위와같이 실행시키면 안됩니다.
조언부탁드립니다.
안녕하세요.
일단 위의 에러는 각 함수가 리턴하는 타입의 차이로 인한 것입니다.
그리고 올려주신 질의의 to_char() 부분에서 'd'는 몇번째 요일인지를 리턴하는 것입니다. 말씀하신 것처럼 월을 리턴하는 것이라면 to_char(sysdate, 'mon', 'ko_kr') 로 사용하셔야 합니다. 아마 오타이실것 같네요.
그 달을 구하는 것이라면 extract()를 사용할 수 있으며 이를 사용할 경우 원하는 연산이 가능합니다.
select LAST_DAY(sysdate) + 7 - extract(day from LAST_DAY(sysdate)) from db_root
만약 요일을 구하는 것이라면 아래와 같이 수정가능합니다.
select LAST_DAY(sysdate) + 7 - cast(TO_CHAR(LAST_DAY(sysdate), 'd') as int) from db_root