2017-12-18 18 views
1

에 오류가있어 쿼리 아래 사용하지만이 쿼리를 사용하고이 날짜 형식을 1970-01-01T00 : 00 : 00-08 : 00에서 oracle의 dd/mm/yyyy로 변환하고 싶습니다. 내가 변환

SELECT CAST(TO_TIMESTAMP_TZ(REPLACE('1970-01-01T00:00:00-08:00', 'T', ''), 
            'YYYY-MM-DD HH:MI:SS TZH:TZM') AS DATE) DOB FROM dual; 

출력

ORA-01849은 다음과 같습니다 시간은 01849. 1 ~ 12 00000이어야합니다 - "시간이 1 ~ 12해야한다"

나는 출력을 필요에만 MM/DD/YYYY

답변

3

시간 형식은 24 시간이므로 HH 대신 HH24을 사용합니다.

SELECT CAST(TO_TIMESTAMP_TZ(
    REPLACE('1970-01-01T00:00:00-08:00', 'T', ''), 
    'YYYY-MM-DD HH24:MI:SS TZH:TZM') AS DATE) DOB 
FROM dual; 

하지만 그 대신 대체 사용하여, 당신은 패턴에 문자 "T"를 사용할 수 있습니다

SELECT CAST(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    AS DATE) DOB FROM dual; 

는 캐스트가 바로 시간대 정보 방울 것을 알린다. 당신이 (04 말 : 00)를 특정 시간대에 날짜로 타임 스탬프를 변환해야하는 경우, TIMESTAMP WITH TIME ZONEat time zone 절을 사용

:
SELECT CAST(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    at time zone '+04:00' AS DATE) DOB FROM dual; 

가 더보기

출력 형식을 MM/DD/YYYY으로 지정하려면 타임 스탬프에서 to_char을 직접 사용하십시오 :

SELECT to_char(
    TO_TIMESTAMP_TZ('1970-01-01T00:00:00-08:00', 
     'YYYY-MM-DD"T"HH24:MI:SS TZH:TZM') 
    at time zone '+04:00', 'MM/DD/YYYY') DOB FROM dual;