2009-05-05 5 views
3

Ich hatte vorher einige brillante Hilfe und ich hoffe, dass Sie mich wieder aus einem Loch bringen können.Oracle Datumsformatierung "2009-02-13T11: 46: 40 + 00: 00"

Ich habe eine Verabredung kommt aus einem Web-Service in diesem Format: 2009-02-13T11: 46: 40 + 00: 00

mir die wie normale UTC-Format aussieht.

Ich muss es in eine Oracle-Datenbank einfügen, also verwende ich to_date() auf der Einfügung. Das Problem ist, ich bekomme keine passende Formatierungszeichenfolge dafür und bekomme immer "ORA-01861: Literal stimmt nicht mit Formatzeichenfolge" überein.

Ich weiß, es ist ein ziemlich triviales Problem, aber aus irgendeinem Grund kann ich nicht bekommen, dass es die richtige Formatzeichenfolge akzeptiert. Jede Hilfe wird geschätzt.

Thanks :)

Gareth

+0

Welche Maske liefern Sie an TO_DATE()? – cagcowboy

Antwort

4
SELECT CAST(TO_TIMESTAMP_TZ(REPLACE('2009-02-13T11:46:40+00:00', 'T', ''), 'YYYY-MM-DD HH:MI:SS TZH:TZM') AS DATE) 
FROM dual 
7

Sie es zu einem TIMESTAMP_WITH_TIME_ZONE Datentyp direkt umwandeln kann.

select 
    to_timestamp_tz('2009-02-13T11:46:40+00:00','YYYY-MM-DD"T"HH24:MI:SSTZH:TZM') 
from 
dual 

TO_TIMESTAMP_TZ('2009-02-13T11:46:40+00:00','YYYY-MM-DD"T"HH24:MI:SSTZH:TZM 
--------------------------------------------------------------------------- 
13-FEB-09 11.46.40.000000000 AM +00:00 

(Ich gehe davon aus der Eingabezeichenfolge eine 24-Stunden-Takt wird verwendet, da es keine AM/PM-Indikator ist.)

Wenn Sie das zu einem einfachen DATE konvertieren möchten, können Sie, aber es wird die Zeitzoneninformationen verlieren.

+0

Dave, das ist brilliant Prost - Ich kann nicht einen TIMESTAMP_WITH_TIME_ZONE-Datentyp verwenden, obwohl es nicht meine Datenbank ist. Dies wäre jedoch die bevorzugte Lösung. Prost – Gareth

1

Um das Datum im angegebenen Format zu importieren, können Sie nls_date_format einstellen.

Beispiel:

alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS' 

Auf diese Weise Ihre SQL-Anweisungen kürzer sein (keine Abgüsse). Für verschiedene Masken sehen Sie unter Datetime Format Models