Oracle의 여러 가능한 마스크로 현재까지 변환
문제
Oracle의 Varchar2 열에서 날짜를 가져와야하지만 형식이 일관되지 않습니다. 일부 분야에는 '2009.12.31', 다른 분야에는 '2009/12/32 00:00:00'이있을 수 있습니다. 내가 사용할 수있는 표준 구성이 있습니까?
begin
to_date(date, mask1)
exception
begin
to_date(date,mask2)
exception
..
end
end
올바른 마스크를 결정하기 위해 블록 또는 사전 날짜 문자열 분석? 같은 것 to_date(date, mask1,mask2,..)
?
해결책
아니요, 그러나 일부 Oracle 날짜 형식은 차이를 "용서"합니다.
SQL> select to_date('2009.12.31','YYYY/MM/DD') from dual;
TO_DATE('20
-----------
31-DEC-2009
따라서 처리해야 할 경우의 양이 줄어들 수 있습니다. 나는 당신이 생각했던 줄을 따라 함수를 작성하여 코드의 모든 장소에서 호출 할 수 있도록하는 것이 좋습니다.
다른 팁
지원하려는 가능한 모든 형식을 열거해야합니다. 일부는 모호합니다 (예 : "10-11-2009"10 월 10 일 또는 10 월 11 일)이므로 코드가 다른 코드보다 선호되어야합니다.
Tony가 말했듯이, 일부 형식은 분리기 문자 및 누락 된 비트의 구문 분석과 관련하여 다양한 입력을 받아 들일 것입니다 (예 : 'DD-Mon-Yyyy HH24 : MI : SS'는 '31 -dec-2009 10:30과 일치합니다. : 00 ', '31/Dec/2009 10:30', '31 Dec 2009 ').
이러한 단순화와는 별도로, 다른 사람들이 시작할 때 일련의 시작 (형식 1) 예외가 필요합니다.
제휴하지 않습니다 StackOverflow