的Date.toString()的默認格式似乎是,在美國地區,是這樣的:的Java Date.toString在Oracle的TO_DATE
Thu Nov 24 15:20:52 CET 2016
Oracle數據庫有一個功能「TO_DATE」,允許從轉換字符串至今。第一個參數是日期格式。
這是映射Java Date.toString()字符串的正確日期格式?它是:
DAY MONTH DD HH24:MI:SS TZD YYYY
?
謝謝。
的Date.toString()的默認格式似乎是,在美國地區,是這樣的:的Java Date.toString在Oracle的TO_DATE
Thu Nov 24 15:20:52 CET 2016
Oracle數據庫有一個功能「TO_DATE」,允許從轉換字符串至今。第一個參數是日期格式。
這是映射Java Date.toString()字符串的正確日期格式?它是:
DAY MONTH DD HH24:MI:SS TZD YYYY
?
謝謝。
一個Oracle DATE
數據類型沒有時區 - 你需要一個TIMESTAMP WITH TIMEZONE
數據類型:
SELECT TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
FROM DUAL
如果你想轉換爲DATE
(和時間區區域總是CET
),那麼你可以使用:
SELECT TO_DATE(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS "CET" YYYY'
)
FROM DUAL
如果你想讓它作爲一個DATE
數據類型,並尊重原始字符串中的時區,那麼您將需要(1)將其轉換爲TIMESTAMP WITH TIMEZONE
數據類型; (2)將該值轉換爲標準時區(UTC通常用於此); (3)然後將其轉換成一個日期:
SELECT CAST(
TO_TIMESTAMP_TZ(
'Thu Nov 24 15:20:52 CET 2016',
'DY MON DD HH24:MI:SS TZR YYYY'
)
AT TIME ZONE 'UTC'
AS DATE
)
FROM DUAL;
將輸出的日期2016-11-24 14:20:52
(輸入日期的UTC表示)。
在Java中,使用toString()方法的默認日期格式爲EEE MMM dd HH:mm:ss zzz yyyy。我不知道爲什麼,但Oracle不支持解析語法'EEE','MMM'和'zzz'。
從Java訪問數據庫時,需要使用JDBC的set/getTimestamp(或set/getDate)方法,而不是設置字符串值。 –
現場並不總是完美的:-)。我沒有控制的java代碼也沒有通過值,只是我可以配置oracle「to_date」格式的字符串。 –