はじめに:to_char()
日付から文字列を返します。したがって、date
が必要な場合 、使用しないでください。つまり、これを置き換えてください:
to_char(to_date(f_sta_date, 'YYYYMMDD') + (f_sta_time)/86400), 'YYYY-MM-DD HH24:MI:SS')
宛先:
to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400
次に、タイムゾーンの管理に関しては、timestamp with time zone
を使用する必要があります。 date
の代わりにデータ型 。現地時間で日付を変換するには(つまり、SESSIONTIMEZONE
で定義されているセッションのタイムゾーン) )タイムスタンプを取得し、UTCで対応する日付/時刻を取得するには、次の操作を実行できます。
cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp with time zone)
at time zone 'UTC'
あなたの質問:
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