sql >> Databasteknik >  >> RDS >> Oracle

Konvertera datetime-kolumnen till UTC-tid

Till att börja med:to_char() returnerar en sträng från ett datum. Så om du vill ha ett date , använd den inte, dvs ersätt den här:

to_char(to_date(f_sta_date, 'YYYYMMDD') + (f_sta_time)/86400), 'YYYY-MM-DD HH24:MI:SS')

Till:

to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400

Sedan:när det kommer till att hantera tidszoner måste du använda timestamp with time zone datatyp istället för date . För att konvertera ditt datum till lokal tid (dvs. tidszonen för din session, som definieras av SESSIONTIMEZONE ) till en tidsstämpel och få motsvarande datum/tid vid UTC kan du göra:

cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp with time zone) 
    at time zone 'UTC'

Din fråga:

select
    to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 dt_sta,
    to_date(f_sto_date, 'YYYYMMDD') + f_sto_time/86400 dt_sto,
    cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp) 
        at time zone 'UTC' dt_sta_utc,
    cast(to_date(f_sto_date, 'YYYYMMDD') + f_sto_time/86400 as timestamp) 
        at time zone 'UTC' dt_sto_utc
from t


  1. Hämta data till mallen från en extern databas med django

  2. Hämta data från mysql och visa i form av ascii-texttabell i webbläsaren

  3. Markör i proceduren returnerar fler värden än fråga

  4. Psycopg2 :Skapa en tabell i en lagrad procedur Postgres