web-dev-qa-db-fra.com

Convertir l'horodatage/la date et l'heure d'UTC en EST Oracle SQL

J'ai un champ avec une date/heure comme ceci:

2009-11-17 18:40:05

C'est en UTC. Dans la requête, comment puis-je convertir ceci en EST?

J'essaie quelque chose comme ça mais ça jette une erreur.

// datetime is the field name
SELECT 
   FROM_TZ(TIMESTAMP TO_DATE(datetime, 'yyyy-mm-dd hh24miss'), 'EST') AS DT
FROM
   db_name
14
Phill Pafford

J'ai dû le modifier légèrement pour qu'il fonctionne dans ma base de données, mais cela a fonctionné:

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

La clé est la syntaxe "au fuseau horaire".

16
Dan

Si vous souhaitez convertir un champ de date d'UTC en HNE, cela a fonctionné pour moi:

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

Tout d'abord, je transforme le champ de date souhaité (sous la forme DATE_FIELD) en un horodatage. Le résultat de la conversion est le premier paramètre de la fonction FROM_TZ, qui nécessite que le paramètre soit de type TIMESTAMP. Le deuxième paramètre est 'UTC', puisque c'est ce que nous sommes en train de changer. 

Ensuite, je renvoie les résultats de cette fonction au type DATE et lui donne un alias. 

4
Trevor.Screws
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
0
Vilas