sql >> Database teknologi >  >> RDS >> Oracle

Oracle Time Zones Conversion (ved hjælp af from_tz)

to_timestamp() får en streng (VARCHAR2, CHAR ...) hvis du forsøger at give den en dato, så vil Oracle konvertere den til en streng i henhold til NLS_DATE_FORMAT, som kan variere i forskellige miljøer og returnere uventede resultater (som i dette tilfælde) .
Det du skal gøre er at bruge to_char først, så din forespørgsel kan se sådan ud:

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

OPDATERING: hvis jeg forstår dig rigtigt, vil du gerne have noget som dette:

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. Sådan laver du en batch-indsættelse i MySQL

  2. Samlet forespørgsel i sidste række

  3. Overførsel af parametre til Oracle SQL-fil fra batch-fil

  4. Opretter du tilpassede html-tags til CMS?