sql >> Database >  >> RDS >> Oracle

Converteer datetime-kolom naar utc-tijd

Om te beginnen:to_char() retourneert een string van een datum. Dus als je een date wilt , gebruik het niet, dwz vervang dit:

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

Aan:

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

Dan:als het gaat om het beheren van tijdzones, moet u de timestamp with time zone gebruiken datatype in plaats van date . Om uw datum om te zetten in lokale tijd (dwz de tijdzone van uw sessie, gedefinieerd door SESSIONTIMEZONE ) naar een tijdstempel en de bijbehorende datum/tijd op UTC krijgen, kunt u het volgende doen:

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

Uw vraag:

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. gebruik van regex in mysql

  2. MySQL-trigger voordat updatekolom wordt ingevoegd met nieuwe auto-increment-id

  3. ORACLE en TRIGGERS (ingevoegd, bijgewerkt, verwijderd)

  4. Postgres-wijzigingen in Java-toepassing op de hoogte stellen