2009-05-05 109 views
3

我以前有過一些很棒的幫助,我希望你能讓我再次從洞中出來。Oracle日期格式「2009-02-13T11:46:40 + 00:00」

我已經得到了從Web服務來在這個格式的日期: 2009-02-13T11:46:40 + 00:00

這對我看起來像標準的UTC格式。

我需要將它插入Oracle數據庫,所以我在插入時使用to_date()。問題是,我不能得到一個匹配的格式化字符串,並不斷得到「ORA-01861:文字不匹配格式字符串」錯誤。

我知道它是一個相當微不足道的問題,但由於某種原因,我無法讓它接受正確的格式字符串。任何幫助讚賞。

謝謝:)

加雷思

+0

你提供什麼面具TO_DATE()? – cagcowboy 2009-05-05 14:38:31

回答

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

您可以直接轉換成TIMESTAMP_WITH_TIME_ZONE數據類型。

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 

(我假設,因爲沒有AM/PM指示輸入字符串使用24小時制)。

如果你想將其轉換成一個簡單的日期,就可以了,但它會丟失時區信息。

+0

戴夫,這是燦爛的歡呼 - 我不能使用TIMESTAMP_WITH_TIME_ZONE數據類型,雖然它不是我的數據庫。但是,這將是首選解決方案。 乾杯 – Gareth 2009-05-05 14:49:30

1

要以指定的格式導入日期,您可以設置nls_date_format

例子:

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

這樣,你的SQL語句可以更短(無管型)。對於各種面具的看看Datetime Format Models

相關問題