sql >> Databáze >  >> RDS >> Oracle

Převést sloupec data a času na čas utc

Začněte s:to_char() vrátí řetězec z data. Pokud tedy chcete date , nepoužívejte, tj. nahraďte toto:

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

Komu:

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

Pak:pokud jde o správu časových pásem, musíte použít timestamp with time zone datový typ namísto date . Chcete-li převést datum na místní čas (tj. časové pásmo vaší relace, které je definováno pomocí SESSIONTIMEZONE ) na časové razítko a získat odpovídající datum/čas v UTC, můžete:

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

Váš dotaz:

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. ERROR 1118 (42000) Velikost řádku je příliš velká

  2. Dotaz na uloženou proceduru pro její názvy parametrů a typy

  3. Hledání konce řádku a návratu vozíku (\r\n) v MySQL

  4. Spouštění skriptů SQL na kontejneru dockeru