【发布时间】:2021-04-05 07:53:16
【问题描述】:
我在 Oracle12 中遇到了这种奇怪的行为。我在 VisualStudio 2019 中使用 oracle.managed.dataAccess
情况如下: 我正在使用一个参数变量(默认情况下是一个字符串),但我没有得到任何结果。该语句本身有效(没有错误),但由于 date 参数,我没有得到任何数据库条目。 date_column 是数据库中的日期类型。
string sql = "select * from Table where c_id = :myC_id and date_column > to_date(:myDate, 'yyyy-mm-dd hh24:mi:ss')";
OracleCommand cmd = new OracleCommand();
cmd.Connection = connectionstring;
cmd.CommadnText = sql;
cmd.Parameters.Add(new OracleParameter("myC_id",myC_id));
cmd.Parameters.Add(new OracleParameter("myDate",myDate));
我尝试将参数作为字符串、日期和所有内容。来回转换了,还是不行。但是,如果我将日期硬编码为下面的字符串,它就可以工作。我正在获取结果和数据。
string sql = "select * from Table where c_id = :myC_id and date_column > to_date('2021-03-30 09:00:00', 'yyyy-mm-dd hh24:mi:ss')";
如果我将字符串变量连接到下面的 sql 字符串,我也会获取数据。
string myDate = "'" + "2021-03-30 09:00:00" + "'";
string sql = "select * from Table where c_id = :myC_id and date_column > to_date({myDate}, 'yyyy-mm-dd hh24:mi:ss')";
但是它不能与参数一起工作,有人可以告诉我为什么,以及我是如何让它工作的吗?
【问题讨论】:
-
我不知道您使用的工具,但这肯定是错误的。我猜/希望这是一个错字:yyyy-mm-dd hh23:mi:ss
-
假设
to_date将字符串日期解析为数据库日期类型,并且C# 中的myDate是DateTime,为什么在第一个示例中将:mydate视为字符串?不是date_column > :myDate吗? -
请edit您的问题包含您定义变量并为其分配值的C#代码。
-
错字?
hh23而不是hh24 -
您需要截断小时分钟和秒吗?你需要 >= 而不是 >?
标签: c# .net oracle frameworks