如何在Oracle数据库的SQL查询中传递DateTime参数

本文关键字:DateTime 参数 查询 SQL Oracle 数据库 | 更新日期: 2023-09-27 17:59:14

我需要在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得到编号

您能告诉我,如何在Oracle数据库的SQL查询中传递DateTime吗?

第页。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()方法),但在这种情况下,我似乎失去了几分钟和几秒钟的

如何在Oracle数据库的SQL查询中传递DateTime参数

做这个:

SELECT * FROM PERSON WHERE PSN_CREATED_DATE >= TO_TIMESTAMP(:createdPrior, 'yyyyMMddHH24missffff')

或者在C#中使用TimeStamp参数,应该是这样的

OracleParameter para = new OracleParameter(":createdPrior", OracleDbType.TimeStamp, ParameterDirection.Input);
para.Value = (Oracle.DataAccess.Types.OracleTimeStamp)value;
command.Parameters.Add(para);

尝试使用OracleParameter

OracleParameter para = new OracleParameter();
para.ParameterName = ":createdPrior";
para.Direction = ParameterDirection.Input;
para.DbType = DbType.DateTime;
para.Value = value;
command.Parameters.Add(para);