oracle - ORA-01840 : input value not long enough for date format when executing a query with a timestamp parameter

标签 oracle timestamp odp.net

我正在尝试使用 odp.net 对具有 TimeStamp(6) 列的 Oracle 数据库表执行查询

我使用下面的代码,它抛出此异常:“ORA-01840:输入值对于日期格式来说不够长”。

OracleConnection con = new OracleConnection(connStr");
using (con)
{
   con.Open();
   OracleCommand command = con.CreateCommand();
   command.CommandText = "SELECT * FROM Logs WHERE LOGDATE > :logDate";
   command.CommandType = System.Data.CommandType.Text;
   command.Parameters.Add(new OracleParameter("logDate", OracleDbType.TimeStamp, DateTime.Now.AddMonths(-1), ParameterDirection.Input));

   using (command)
   {
      OracleDataReader rdr = command.ExecuteReader(); //ORA-01840 exception is thrown here
   }
}

此查询及其参数有什么问题?我还尝试了 OracleDbType.Date,而不是 OracleDbType.TimeStamp,但出现了相同的错误。

最佳答案

我通过传递 OracleTimeStamp 对象而不是 DateTime 对象解决了该问题。下面的代码效果很好:

OracleConnection con = new OracleConnection(connStr");
using (con)
{
   con.Open();
   OracleCommand command = con.CreateCommand();
   command.CommandText = "SELECT * FROM Logs WHERE LOGDATE > :logDate";
   command.CommandType = System.Data.CommandType.Text;
   command.Parameters.Add(new OracleParameter("logDate", OracleDbType.TimeStamp, new OracleTimeStamp(DateTime.Now.AddMonths(-1)), ParameterDirection.Input));

   using (command)
   {
      OracleDataReader rdr = command.ExecuteReader(); //ORA-01840 exception was thrown here
   }
}

关于oracle - ORA-01840 : input value not long enough for date format when executing a query with a timestamp parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33777761/

相关文章:

java - 如何在 Oracle 10gR2 和 JPA 中做到不区分大小写和不区分重音?

php - 使用 PHP 将多行 Oracle 结果集插入 MYSQL

javascript - 如何正确地将 React 中随状态传递的 Date 对象放入 datepicker 中?

php - 使用 PHP 进行时间或时间间隔转换

c# - 在 .NET Core 中连接到 Oracle 数据库时出现 Kerberos 错误

oracle - 将参数绑定(bind)到 Oracle 动态 SQL

hadoop - HBase:获取带有时间戳的行数据请求

odp.net - 'Oracle.DataAccess.Client.OracleConnection'的类型初始值设定项引发了异常

c# - 字符串 EndsWith 方法中 Entity Framework Linq 中的奇怪行为

c - OCI_INVALID_HANDLE - 无效的服务上下文、连接或语句句柄