我从Java获得此日期,并且是日期类型。
所以尝试在oracle中格式化它
select TO_DATE ('2020-04-01 00:00:00.0','YYYY-MM-DD HH24:MI:SS.TZR') from DUAL
无法格式化日期中的最后一个.0。尝试了各种方式
.TZR
TZR
不确定如何格式化?如果我删除.0和.TZR,那么一切正常。
我收到以下错误:
ORA-01820:格式代码不能以日期输入格式出现
01820。00000-“格式代码无法以日期输入格式出现”
最佳答案
.0
是小数秒,不是时区偏移量;但日期数据类型仍然不允许。
如果您的字符串始终带有.0
,则可以将其视为固定字符以忽略它:
select TO_DATE ('2020-04-01 00:00:00.0','YYYY-MM-DD HH24:MI:SS".0"') from DUAL;
TO_DATE('2020-04-01
-------------------
2020-04-01 00:00:00
如果它可以为非零或只是您愿意,则可以将其转换为时间戳,然后将其转换为日期:
select CAST( TO_TIMESTAMP ('2020-04-01 00:00:00.0','YYYY-MM-DD HH24:MI:SS.FF') AS DATE) from DUAL;
CAST(TO_TIMESTAMP('
-------------------
2020-04-01 00:00:00
FF
格式模型元素表示小数秒和as the documentation says,即“在时间戳和间隔格式中有效,但在DATE格式中无效”。从Java中获取值的含义并不完全是束缚,但是,如果要进行JDBC调用并将参数作为字符串传递,则应退后一步,而是使用适当的JDBC数据类型。如果可以的话,还请注意@Ole关于使用现代Java数据类型的评论。