在美国语言环境中,Date.toString()的默认格式似乎是:
Thu Nov 24 15:20:52 CET 2016
Oracle数据库有一个“TO_DATE”函数,允许从字符串转换为日期。第一个参数是日期格式。
映射Java Date.toString()字符串的正确日期格式是什么?是吗:
DAY MONTH DD HH24:MI:SS TZD YYYY
感谢。
答案 0 :(得分:2)
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表示)。
答案 1 :(得分:0)
在Java中,使用toString()方法的默认日期格式是 EEE MMM dd HH:mm:ss zzz yyyy 。我不知道为什么,但Oracle不支持解析语法' EEE' MMM'和' zzz' 。