sql >> Database >  >> RDS >> Oracle

Oracle Tijdzones Conversie (met from_tz)

to_timestamp() krijgt een string (VARCHAR2, CHAR ...) als je het een datum probeert te geven, dan zal oracle het converteren naar een string volgens NLS_DATE_FORMAT die in verschillende omgevingen kan variëren en onverwachte resultaten oplevert (zoals in dit geval) .
Wat u moet doen, is eerst to_char gebruiken, zodat uw vraag er als volgt uit kan zien:

select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM'),'YYYY-MM-DD HH:MI:SS PM') as localtime
from table

UPDATE: als ik je goed begrijp, dan wil je zoiets als dit:

select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
    at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
    from table


  1. MySql-query Vervang NULL door lege tekenreeks in Select

  2. EXPORTEREN ALS INSERT-VERKLARINGEN:Maar in SQL Plus overschrijft de regel 2500 tekens!

  3. MySQL integreren met Python in Windows

  4. PostgreSQL-index niet gebruikt voor query's op IP-bereiken