Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Konwertuj znacznik czasu w formacie ciągu TZ na znacznik czasu w Oracle

Przypuszczalnie stałe T i Z wprowadzają w błąd, ponieważ nie są normalne model formatu daty i godziny elementy. Ale dokumentacja mówi:

Ujmujesz więc T i Z w cudzysłów, jako "T" i "Z" , w Twoim modelu formatu.

Jeśli nie interesuje Cię strefa czasowa, możesz użyć to_timestamp() funkcja :

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

Lub jeśli chcesz mieć strefę czasową, możesz użyć to_timestamp_tz() funkcja , który zostanie ustawiony domyślnie na strefę czasową bieżącej sesji (ponieważ w rzeczywistości jej nie określasz, Z nie jest interpretowane jako Zulu/UTC):

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

Jeśli chcesz mieć strefę czasową i chcesz określić, że jest to UTC, możesz to wymusić za pomocą from_tz() funkcja :

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

Aby zobaczyć różnicę, jaką powodują, określając strefę czasową sesji jako demonstrację:

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                  

Zakładam, że Z jest stałe, a wartości, które otrzymujesz, zawsze reprezentują czas UTC; jeśli rzeczywiście otrzymujesz różne strefy czasowe w wartościach, które chcesz przekonwertować, musisz je wyodrębnić i zastosować – co jest wykonalne, ale trudne i nie warte zagłębiania się, chyba że faktycznie masz taką sytuację.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy do nowoczesnej aplikacji powinienem używać Oracle UCP czy HikariCP?

  2. pl/sql - Używanie dynamicznego zapytania wewnątrz procedury składowanej

  3. jak przekazać zmienną w klauzuli WHERE IN oracle sql?

  4. Problemy, gdy użytkownik wprowadza dane w poleceniu sql

  5. Niemożliwa do zabicia sesja Oracle oczekująca na wiadomość SQL*Net ze zdarzenia klienta