2013-06-09 4 views
0

May2013 (MonYYYY) 형식의 테이블에서 오는 날짜 값을 변경해야합니다. 열 자체는 VARCHAR입니다.MONYYYY가 포함 된 날짜 열에서 지난 달 가져 오기

내 선택 진술 문에서 지난 달 (Apr2013)을 검색하려고합니다. 나는 몇 가지 조사를 수행하고 내가 SYSDATE 사용 된 경우, 다음을 발견했습니다

select to_date(add_months(sysdate, 'MONYYY')-1) from dual 

가 어떻게 그것이 내가 위의이 날짜 구조 작업을해야합니까를? 나는 시도했다 :

select to_date(add_months(date.datetable, MONYYY)-1) from datetable 
+1

첫 번째로 varchar에 날짜를 저장하지 마십시오. 두 번째로 ADD_MONTHS()는 두 개의 매개 변수가있는 함수이므로 -1 이전에 쉼표가 필요합니다. 셋째, TO_DATE() 및 ADD_MONTHS()에 대한 매개 변수가 잘못되었습니다. 네 번째로''MONYYY''를 인용해야하고, 다섯 번째로''MONYYYY'' (여분의 Y)입니다. 마지막으로''datetable.date''는''date.datetable''이 아닙니다. – Ben

답변

2

ADD_MONTHS 함수는 입력으로 날짜 변수가 필요하다. 따라서 먼저 varchar 열을 날짜 유형으로 변환 한 다음 add_months 함수를 적용해야합니다.

SELECT ADD_MONTHS (TO_DATE ('May2013', 'monyyyy'), -1) FROM DUAL; 

반환 유형은 날짜입니다. 이 경우 4 월 1 일 0 시간을 반환합니다.