【发布时间】:2017-06-15 22:18:19
【问题描述】:
我在尝试通过 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
但它们实际上对我不起作用。当我在 SQL Navigator for Oracle 中的 Select 中运行它时,它起到了一种魅力,但是当我从 .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'))
但似乎没有任何效果。
创建过程不是一种选择。
任何帮助将不胜感激。
【问题讨论】:
-
请提供一些您想更新的示例日期。
-
@JSapkota 恐怕我不明白你的评论。更新在帖子中。以及参数的值..但是任何日期都返回相同的错误。 207 年 1 月 31 日 18:15:25、2017 年 1 月 25 日 13:45:15,以此类推。
-
是的@JSapkota,这个字段是数据库中的一个日期。我这样发送:Case When Trim(TO_CHAR(:dt_inactive)) IS NOT NULL Then TO_CHAR(:dt_inactive, 'DD/MM/YYYY HH24:MI:SS') Else TO_CHAR(dt_inactive, 'DD/MM/YYYY HH24: MI:SS') 结束,错误依旧。
标签: c# database oracle date oracle11g