Oracle ORA-01840:在使用时间戳参数执行查询时,输入值的长度不足以使用日期格式
我正在尝试使用odp.net对带有时间戳(6)列的Oracle数据库表执行查询 我正在使用下面的代码,它抛出了这个异常:“ORA-01840:输入值不够长,不能用于日期格式”Oracle ORA-01840:在使用时间戳参数执行查询时,输入值的长度不足以使用日期格式,oracle,timestamp,odp.net,Oracle,Timestamp,Odp.net,我正在尝试使用odp.net对带有时间戳(6)列的Oracle数据库表执行查询 我正在使用下面的代码,它抛出了这个异常:“ORA-01840:输入值不够长,不能用于日期格式” 这个查询及其参数有什么问题?我还尝试了OracleDbType.Date,而不是OracleDbType.TimeStamp,但我得到了相同的错误。我通过传递OracleTimeStamp对象而不是DateTime对象解决了这个问题。下面的代码运行良好: OracleConnection con = new OracleC
这个查询及其参数有什么问题?我还尝试了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
}
}
日志
是表还是视图?您的代码看起来不错,您是否尝试直接在sqldeveloper/sql plus中检查查询?Logs是一个表,LOGDATE是一个时间戳(6)列。当我使用TOAD执行查询时,它工作得很好,但我认为问题在于参数绑定。
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
}
}