我收到错误:ORA-01855: AM/A.M. or PM/P.M. required
当我尝试执行以下查询时。
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI AM'))
我的START_DATE
列的类型为“日期”。
我执行了以下查询并且没有出现任何错误,但在上述问题中仍未成功:
ALTER SESSION SET NLS_DATE_FORMAT = "MM/DD/YYYY HH:MI AM";
答案 0 :(得分:5)
您的格式掩码必须与您要转换的字符串的格式相匹配。因此,您要么将SS
添加到格式掩码中,要么从字符串中删除秒数
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'))
或
INSERT INTO TBL(ID,START_DATE)
values (123, TO_DATE ('3/13/2012 9:22 AM', 'MM/DD/YYYY HH:MI:SS AM'))
如果你想接受一个包含秒的字符串,但你不想在数据库中存储秒数(在这种情况下,Oracle将始终存储0秒),你可以使用TRUNC
函数
INSERT INTO TBL(ID,START_DATE)
values (123, TRUNC( TO_DATE ('3/13/2012 9:22:00 AM', 'MM/DD/YYYY HH:MI:SS AM'), 'MI') )
答案 1 :(得分:0)
运行表单构建器时出现相同的错误, 通过将Filed DataType从TIME更改为CHAR可以解决此问题。