带有日期参数的Oracle查询在日期列上返回无记录

时间:2017-08-14 08:57:46

标签: oracle date

我有以下代码 -

CMD = new OracleCommand("SELECT * FROM BOOKINGSV3 WHERE DT = :DateInQuestion ", Con);
CMD.Parameters.Add("DateInQuestion", OracleDbType.Date).Value = DateTime.Today;

DT是一个Date列,我知道Oracle会明确存储日期,如果我用'14 -AUG-17 00:00:00'手动尝试,我可以检索到所需的结果。如何使用除使用字符串参数之外的参数搜索日期并构造格式为'14 -AUG-17 00:00:00'的字符串?

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:1)

如果您的DT值具有非午夜时间,那么要获取某一天的所有值,您可以使用范围:

SELECT * FROM BOOKINGSV3 WHERE DT >= :DateInQuestion AND DT < :DateInQuestion + 1

>=表示它将从午夜开始查找时间; < .. + 1将限制在第二天的午夜之前。

答案 1 :(得分:0)

执行此操作的一种方法是创建一个包含您要搜索的日期的字符串,并使用您在字符串中使用的日期格式更改查询以显式创建日期。

CMD = new OracleCommand("SELECT * FROM BOOKINGSV3 WHERE DT = to_date(':DateInQuestion','DD-MM-YYYY HH24:MI:SS') ", Con);

这样您就可以控制日期格式而不是某些NLS设置。