我在使用C#中的Oracle.ManagedDataAccess.Client尝试更新我的数据库时遇到此错误。 ORA-01830:日期格式图片在转换整个输入字符串之前结束
我已经开过这些帖子了:
ORA-01830: date format picture [duplicate] 和 ORA-01830: date format picture ends before converting entire input string / Select sum where date query
但他们实际上并没有为我工作。当我在一个Select中使用SQL Navigator for Oracle运行它时,作为一个魅力,但是当从.Net调用下面的更新时,它会抛出这个错误。
update tbUser
set dt_inactive =
case
when trim(to_date(:dt_inactive, 'dd/mm/yyyy HH24:MI:SS')) is not null
then to_date(:dt_inactive, 'dd/mm/yyyy HH24:MI:SS')
else
to_date(dt_inactive, 'dd/mm/yyyy HH24:MI:SS')
end
where user_code = 'DEV01'
在Visual Studio中进行调试,我检查过日期是这样的:dt_inactive = 30/01/2017 14:05:25,这正是我想要发送到我的数据库的格式。但是错误仍然存在。
我已经尝试发送此信息:
TO_DATE(:dt_inactive, 'dd/mm/yyyy HH:MI:SS') -- Throws me ORA-01849: hour must be between 1 and 12
TO_DATE(:dt_inactive, 'dd/mm/yyyy hh24:mi:ss')
TO_DATE(:dt_inactive, 'dd/mm/yyyy HH24:MI:SS')
TO_DATE(TO_CHAR(:dt_inactive), 'dd/mm/yyyy hh24:mi:ss')
TO_DATE(TO_CHAR(:dt_inactive), TO_CHAR('dd/mm/yyyy hh24:mi:ss'))
但似乎没有任何效果。
创建程序不是一种选择。
任何帮助都将不胜感激。
答案 0 :(得分:0)
如果函数中提供的日期没有格式字符串,则会出现错误' ORA_01830'例如,在下面的代码中,没有时区偏移的格式处理程序,因此我们得到了错误。
根据您的信息,日期没有时区信息,但我怀疑您提供的日期不正确。
SQL> select to_Date('06/10/11 15:24:16 +00:00', 'dd/mm/yyyy hh24:mi:ss') from dual;
select to_Date('06/10/11 15:24:16 +00:00', 'dd/mm/yyyy hh24:mi:ss') from dual
*
ERROR at line 1:
ORA-01830: date format picture ends before converting entire input string
如果它包含时区,则可以使用DateTimeOffset.Parse方法将其删除。