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

Konverter datetime-kolonnen til UTC-tid

Til at starte med:to_char() returnerer en streng fra en dato. Så hvis du vil have en date , brug det ikke, dvs. udskift dette:

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

Til:

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

Derefter:når det kommer til styring af tidszoner, skal du bruge timestamp with time zone datatype i stedet for date . At konvertere din dato til lokal tid (dvs. tidszonen for din session, som er defineret af SESSIONTIMEZONE ) til et tidsstempel og få den tilsvarende dato/tid ved UTC, kan du gøre:

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

Din forespørgsel:

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. Find alle tabeller, der indeholder kolonne med angivet navn - MS SQL Server

  2. Migrering fra MySQL til PostgreSQL

  3. Sådan laver du en rullebar JTable

  4. Postgres - Er dette den rigtige måde at oprette et delvist indeks på en boolesk kolonne?