sql >> Databasteknik >  >> RDS >> Oracle

Oracle Time Zones Conversion (med from_tz)

to_timestamp() får en sträng (VARCHAR2, CHAR ...) om du försöker ge den ett datum, kommer Oracle att konvertera den till en sträng enligt NLS_DATE_FORMAT som kan variera i olika miljöer och returnera oväntade resultat (som i det här fallet) .
Vad du bör göra är att använda to_char först, så din fråga kan se ut så här:

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

UPPDATERING: om jag förstår dig rätt så vill du ha något sånt här:

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. PHP 7.0 och MySQL startfel odefinierad symbol:mysqlnd_allocator i okänt

  2. Hur skapar man en funktion som returnerar högsta id?

  3. Hur får man den primära nyckeln att ha X-siffror i PostgreSQL?

  4. Hur man kopierar data från en tabell till en annan i SQL