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