的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”格式的字符串。 –