我必须在Oracle DB中执行一些插入操作。我有一些约会 采用以下格式
'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 - “日期格式无法识别”)。
我应该使用哪个“字符串”这个格式用毫秒?
提前致谢!
答案 0 :(得分:71)
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' )
答案 1 :(得分:9)
TO_DATE支持转换为DATE数据类型,不支持毫秒。如果您想在Oracle中获得毫秒级支持,则应该查看TIMESTAMP数据类型和TO_TIMESTAMP函数。
希望有所帮助。
答案 2 :(得分:5)
您可以尝试此格式SS.FF
毫秒:
yyyy-mm-dd HH:MI:SS.FF
更多详情:
https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm
答案 3 :(得分:1)
持续三位数毫秒:
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'),
答案 4 :(得分:-3)
您必须将日期类更改为时间戳。
String s=df.format(c.getTime());
java.util.Date parsedUtilDate = df.parse(s);
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedUtilDate.getTime());