Untuk memulai dengan:to_char()
mengembalikan string dari tanggal. Jadi jika Anda menginginkan date
, jangan digunakan, yaitu ganti ini:
to_char(to_date(f_sta_date, 'YYYYMMDD') + (f_sta_time)/86400), 'YYYY-MM-DD HH24:MI:SS')
Kepada:
to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400
Kemudian:dalam hal mengelola zona waktu, Anda perlu menggunakan timestamp with time zone
tipe data bukan date
. Untuk mengonversi tanggal Anda dalam waktu lokal (yaitu zona waktu sesi Anda, yang ditentukan oleh SESSIONTIMEZONE
) ke stempel waktu dan mendapatkan tanggal/waktu yang sesuai di UTC, Anda dapat melakukan:
cast(to_date(f_sta_date, 'YYYYMMDD') + f_sta_time/86400 as timestamp with time zone)
at time zone 'UTC'
Permintaan Anda:
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