문제

다음과 같은 날짜/시간 값을 가진 필드가 있습니다.

2009-11-17 18:40:05

UTC에 있습니다. 쿼리에서 이것을 EST로 어떻게 변환 할 수 있습니까?

나는 이런 식으로 시도하고 있지만 오류가 발생합니다.

// datetime is the field name
SELECT 
   FROM_TZ(TIMESTAMP TO_DATE(datetime, 'yyyy-mm-dd hh24miss'), 'EST') AS DT
FROM
   db_name
도움이 되었습니까?

해결책

데이터베이스에서 작동하도록 약간 조정해야했지만이 작업은 효과가있었습니다.

select from_tz(to_timestamp('2009-11-17 18:40:05','yyyy-mm-dd hh24:mi:ss'), 'UTC') 
at time zone 'America/New_York' from dual

키는 "At Time Zone"구문입니다.

다른 팁

날짜 필드를 UTC에서 EST로 변환하려면 다음과 같이 효과가있었습니다.

CAST(FROM_TZ(CAST(DATE_FIELD AS TIMESTAMP), 'UTC') 
at time zone 'America/New_York' AS Date) as DESIRED_FIELD_NAME

먼저, 원하는 날짜 필드 (date_field)를 타임 스탬프로 캐스팅합니다. 캐스트의 결과는 From_tz 함수의 첫 번째 매개 변수이며, 이는 파라미터가 TimeStamp의 유형이어야합니다. 두 번째 매개 변수는 'UTC'입니다. 왜냐하면 그것이 우리가 바꾸는 것이기 때문입니다.

그런 다음 해당 함수의 결과를 유형 날짜로 돌려 보내고 별명을 제공합니다.

select to_char(systimestamp at time zone 'EST','HH') EST_TIME,
    TO_CHAR(SYSDATE,'HH') EDT_TIME,
    NEW_TIME(SYSDATE,
        (
            CASE 
                WHEN to_char(systimestamp at time zone 'EST','HH') = TO_CHAR(SYSDATE,'HH') 
                THEN 'EST'
                ELSE 'EDT'
            END
        ),'GMT') 
    from dual
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top