Oracle的TO_DATE中的Java Date.toString

时间:2016-11-28 08:56:17

标签: java string oracle date

在美国语言环境中,Date.toString()的默认格式似乎是:

Thu Nov 24 15:20:52 CET 2016

Oracle数据库有一个“TO_DATE”函数,允许从字符串转换为日期。第一个参数是日期格式。

映射Java Date.toString()字符串的正确日期格式是什么?是吗:

DAY MONTH DD HH24:MI:SS TZD YYYY

感谢。

2 个答案:

答案 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' 。

了解详情:Table 9-4 Datetime Format Elements