Подтвердить что ты не робот

Преобразовать временную метку/дату с UTC на EST Oracle SQL

У меня есть поле с датой/значением времени следующим образом:

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
4b9b3361

Ответ 1

Мне пришлось слегка настроить его, чтобы заставить его работать с моей базой данных, но это сработало:

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

Ключ - синтаксис "в часовом поясе".

Ответ 2

Если вы хотите преобразовать поле даты из 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", так как это то, от чего мы меняемся.

Затем я передал результаты этого вызова функции, чтобы ввести DATE и присвоить ему псевдоним.

Ответ 3

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