c# - 如何在 Oracle DB 的 SQL 查询中传递 DateTime 参数

标签 c# sql oracle datetime timestamp

我需要在 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;
    }
}

结果我收到以下异常

Exception: Additional information: ORA-00932: inconsistent datatypes: expected TIMESTAMP got NUMBER

你能告诉我,如何在 Oracle DB 的 SQL 查询中传递 DateTime 吗?

附言 我试过的: -我创建了一个具有特征的 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() 方法),但在这种情况下,我似乎失去了分秒

最佳答案

做这个:

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);

关于c# - 如何在 Oracle DB 的 SQL 查询中传递 DateTime 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214898/

相关文章:

c# - 如何以编程方式与 Java 或 C# 中的软件设备驱动程序进行通信?

c# - 使用 linq 根据日期之间获取结果

c# - 如何保存 bool 变量的播放器偏好设置?

php - 即使我没有更改任何内容,也要更新 TIMESTAMP 列?

database - TKProf 输出 : SQL*Net message from client

c# - 通过 C# 弹出 USB 设备

mysql - 是否可以使用现有值从数据库中插入另一个值?

mysql - 从 mysql 中的另一个表插入或更新

oracle - 如何从 Oracle 数据泵导出中排除某些表

sql-server - SQLXML 是否破坏了 1NF?