我有以下代码 -
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'的字符串?
答案 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设置。