sql >> Base de Datos >  >> RDS >> Oracle

Convertir la columna de fecha y hora a la hora utc

Para empezar con:to_char() devuelve una cadena de una fecha. Así que si quieres una date , no lo use, es decir, reemplace esto:

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

Para:

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

Entonces:cuando se trata de administrar zonas horarias, debe usar la timestamp with time zone tipo de datos en lugar de date . Para convertir su fecha en hora local (es decir, la zona horaria de su sesión, que está definida por SESSIONTIMEZONE ) a una marca de tiempo y obtener la fecha/hora correspondiente en UTC, puede hacer:

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

Su consulta:

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