Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Konvertieren Sie TimeStamp im TZ-String-Format in TimeStamp in Oracle

Vermutlich verwirren Sie das feste T und Z etwas, da sie nicht normal sind datetime-Formatmodell Elemente. Aber die Dokumentation sagt:

Also schließen Sie T und Z in doppelte Anführungszeichen ein, als "T" und "Z" , in Ihrem Formatmodell.

Wenn Sie sich nicht für die Zeitzone interessieren, können Sie the verwenden to_timestamp() Funktion :

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

Oder wenn Sie mit der Zeitzone haben möchten, können Sie das verwenden to_timestamp_tz() Funktion , die standardmäßig auf Ihre aktuelle Sitzungszeitzone eingestellt ist (da Sie hier eigentlich keine angeben, wird das Z nicht als Zulu/UTC interpretiert):

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

Wenn Sie es mit einer Zeitzone wünschen und angeben möchten, dass es sich um UTC handelt, können Sie dies mit der from_tz() Funktion :

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

Um den Unterschied zu sehen, den diese erzeugen, geben Sie eine Zeitzone für die Sitzung als Demo an:

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                  

Ich gehe davon aus, dass das Z fest ist und die Werte, die Sie erhalten, daher immer UTC darstellen. Wenn Sie tatsächlich unterschiedliche Zeitzonen in den Werten erhalten, die Sie konvertieren müssen, müssen Sie diese extrahieren und anwenden - was machbar, aber schwierig ist und sich nicht lohnt, darauf einzugehen, es sei denn, Sie haben diese Situation tatsächlich.