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

Převeďte časové razítko ve formátu řetězce TZ na časové razítko v Oracle

Pravděpodobně vás pevné T a Z trochu mate, protože nejsou normální model formátu datum a čas Prvky. Ale dokumentace říká:

T a Z tedy uzavřete do dvojitých uvozovek jako "T" a "Z" , ve vašem modelu formátu.

Pokud vás časové pásmo nezajímá, můžete použít to_timestamp() funkce :

to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Nebo pokud chcete mít časové pásmo, můžete použít to_timestamp_tz() funkce , které bude mít výchozí časové pásmo aktuální relace (protože zde ve skutečnosti žádné nezadáváte, Z není interpretováno jako Zulu/UTC):

to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Pokud to chcete s časovým pásmem a chcete zadat, že je to UTC, můžete to vynutit pomocí from_tz() funkce :

from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')

Chcete-li vidět rozdíl, který produkují, zadejte časové pásmo pro relaci jako ukázku:

alter session set time_zone = 'America/New_York';

select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
  to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
  from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;

NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000                       
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK      
24-MAR-15 07.08.24.000000000 UTC                  

Předpokládám, že Z je pevné a hodnoty, které získáte, proto vždy představují UTC; pokud skutečně získáte různá časová pásma v hodnotách, které potřebujete převést, budete je muset extrahovat a použít – což je proveditelné, ale obtížné a nestojí za to se do toho pouštět, pokud takovou situaci skutečně nemáte.




  1. php mysql třídí výsledky podle pořadí načtení

  2. mysql/oracle uložený matematický vzorec

  3. Jak procházet různými schématy a na každém spustit nějaké SQL?

  4. Problém s MySQL Match