使用 Oracle to_date 函数以毫秒表示日期字符串

我必须执行一些插入到一个 Oracle 数据库。我有一些日期 格式如下

'23.12.2011 13:01:001'

在我编写的文档之后,插入 到目前为止如下:

to_date('23.12.2011 13:01:01', 'DD.MM.YYYY HH24:MI:SS')

现在我有了带有毫秒格式的日期

'23.12.2011 13:01:001'

我试过以下方法:

to_date('23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3')

错误(传递错误01821.00000-“日期格式无法识别”)。

对于这种毫秒格式,我应该使用哪个“字符串”?

先谢谢你!

411015 次浏览

OracleDATE存储时间的精度不超过一秒。无法在 DATE列中存储毫秒精度数据。

您的两个选项是在将其转换为 DATE之前截断毫秒字符串,即。

to_date( substr('23.12.2011 13:01:001', 1, 19), 'DD.MM.YYYY HH24:MI:SS' )

或者将字符串转换为支持毫秒精度的 TIMESTAMP

to_timestamp( '23.12.2011 13:01:001', 'DD.MM.YYYY HH24:MI:SSFF3' )

TO _ DATE 支持转换为 DATE 数据类型,这不支持毫秒。如果需要 Oracle 中的毫秒支持,应该查看 TIMESTAMP 数据类型和 TO _ TIMESTAMP 函数。

希望能帮上忙。

您必须将日期类更改为时间戳。

String s=df.format(c.getTime());
java.util.Date parsedUtilDate = df.parse(s);
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedUtilDate.getTime());

您可以尝试这种格式的 SS.FF毫秒:

To _ time 戳(table _ 1. date _ coll,‘ DD-Mon-RR HH24: MI: SS.FF’)

更多细节:
Https://docs.oracle.com/cd/b19306_01/server.102/b14200/functions193.htm

三位数毫秒:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF3')

六位数毫秒:

TO_CHAR(LN_AUTOD_UWRG_DTTM,'MM/DD/YYYY HH24:MI:SS.FF'),