UTC에서 EST Oracle SQL로 타임 스탬프/날짜 시간 변환
-
20-09-2019 - |
문제
다음과 같은 날짜/시간 값을 가진 필드가 있습니다.
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
제휴하지 않습니다 StackOverflow