将Oracle to_date函数用于毫秒日期字符串

fd3cxomn  于 2022-12-22  发布在  Oracle
关注(0)|答案(5)|浏览(325)

我必须向Oracle数据库中执行一些插入操作。我有一些日期,格式如下

'23.12.2011 13:01:001'

在我编写的文档之后,插入to_date如下:

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-"日期格式无法识别")。
对于这种毫秒格式,我应该使用哪个"字符串"?

nwlls2ji

nwlls2ji1#

Oracle DATE不会存储精度超过秒的时间。不能在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' )
ddrv8njm

ddrv8njm2#

TO_DATE支持转换为DATE数据类型,而DATE数据类型不支持毫秒。如果你想在Oracle中支持毫秒,你应该看看TIMESTAMP数据类型和TO_TIMESTAMP函数。
希望能有所帮助。

dldeef67

dldeef673#

对于三位数毫秒:

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'),
kxeu7u2r

kxeu7u2r4#

您可以尝试以下格式SS.FF(毫秒):
至时间戳(表_1.date_col,"24小时24日-周一-呼吸频率:MI:SS. FF")
有关详细信息:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm

hsvhsicv

hsvhsicv5#

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

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

相关问题