Oracle中的Java Date.toString';到现在为止

Oracle中的Java Date.toString';到现在为止,java,string,oracle,date,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 ? 谢谢。在Java中,带有toString()方法的默认日期格式是EEE-MMM-dd-HH:mm:ss-zzz-yyyy。我不知道

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

Thu Nov 24 15:20:52 CET 2016
Oracle数据库有一个函数“TO_DATE”,允许从字符串转换为日期。第一个参数是日期格式

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

DAY MONTH DD HH24:MI:SS TZD YYYY
?


谢谢。

在Java中,带有toString()方法的默认日期格式是EEE-MMM-dd-HH:mm:ss-zzz-yyyy。我不知道为什么,但Oracle不支持解析语法“EEE”、“MMM”和“zzz”


阅读更多信息:

Oracle
日期
数据类型没有时区-您需要带有时区的
时间戳
数据类型:

SELECT TO_TIMESTAMP_TZ(
         'Thu Nov 24 15:20:52 CET 2016',
         'DY MON DD HH24:MI:SS TZR YYYY'
       )
FROM DUAL
如果要转换为
日期
(且时区始终为
CET
),则可以使用:

SELECT TO_DATE(
         'Thu Nov 24 15:20:52 CET 2016',
         'DY MON DD HH24:MI:SS "CET" YYYY'
       )
FROM DUAL
如果您希望将其作为
日期
数据类型,并尊重原始字符串中的时区,则需要(1)将其转换为带有时区数据类型的
时间戳;(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访问数据库时,需要使用JDBC的
set/getTimestamp
(或
set/getDate
)方法,而不是设置字符串值。Live并不总是完美的:-)。我无法控制java代码和传递的值,只需配置oracle“to_date”格式的string.Thnaks作为答案。在第二个示例中,“CET”不能是TZD?@pasabaporaqui当您使用
TO\u DATE
时不能,因为
DATE
数据类型没有时区,所以它不理解
TZD
格式掩码(您将得到
ORA-01821:无法识别的日期格式
异常)@pasabaporaqui在将时区转换为日期之前添加了一个编辑来标准化时区。我在谷歌上找不到“时区”的语法,但GG建议我使用其他方法来“时间戳”。我用SQL Navigator试用过,效果很好。那么,你能给我解释一下“时区”的语法吗?@tuyendev谢谢,是的,它应该是“时间戳”的
,“时间戳”
-从另一个系统输入,我输入了错误的函数名。现在更正。