我需要在SQL查询的WHERE子句中包含一些“TIMESTAMP”字段:
SELECT * FROM PERSON WHERE PSN_CREATED_DATE >= :createdPrior
在我的代码中,createdPrior参数是以下方式定义的
...
command.Parameters.Add(":createdPrior", Miscellaneous.convertToOracleTimeStamp(createdPrior));
...
static class Miscellaneous
{
public static OracleTimeStamp convertToOracleTimeStamp(DateTime dateTime)
{
OracleTimeStamp result = new OracleTimeStamp(dateTime);
return result;
}
}
因此,我收到了以下异常:
异常:附加信息:ORA-00932:不一致的数据类型:预期 TIMESTAMP 而得到 NUMBER
你能告诉我如何在Oracle数据库的SQL查询中传递日期时间?
P.S. 我尝试过: - 我创建了一个具有特征的Oracle参数。
OracleParameter para = new OracleParameter();
para.ParameterName = ":createdPrior";
para.Direction = System.Data.ParameterDirection.Input;
para.OracleDbType = OracleDbType.TimeStamp;
para.Value = Miscellaneous.convertToOracleTimeStamp(createdPrior);
-我只传递了日期时间(DateTime)。但是我收到了另一个异常。
-我尝试将参数转换为日期类型(DATE),使用to_date()方法,但在这种情况下,似乎我失去了分钟和秒。
SqlDbType.DateTime
,不要使用ToString()
。 - Liam