【发布时间】:2011-08-27 04:42:36
【问题描述】:
我正在构建一个内联 SQL 查询(无需对此发表评论,我知道它不是最好的方法,而是公司如何做事!)并且我需要将 Oracle DATE 列与 C# DateTime.Now 进行比较。我需要在 DateTime.Now 和列周围进行哪些转换才能使这种比较起作用? (我想比较整个 DateTime 对象而不仅仅是 Date 部分)
【问题讨论】:
我正在构建一个内联 SQL 查询(无需对此发表评论,我知道它不是最好的方法,而是公司如何做事!)并且我需要将 Oracle DATE 列与 C# DateTime.Now 进行比较。我需要在 DateTime.Now 和列周围进行哪些转换才能使这种比较起作用? (我想比较整个 DateTime 对象而不仅仅是 Date 部分)
【问题讨论】:
您可以使用 Oracle TO_DATE 函数。
WHERE someDateColumn <= TO_DATE(c#_date, 'YYYY/MM/DD')
对于c#日期(见custom date and time strings):
DateTime.Now.ToString("yyyy/MM/dd")
如果你想增加小时/分钟/秒,你可以做相应的修改。
edit - 实际上,既然你提到了整个事情而不仅仅是日期,我会添加它。 :)
WHERE someDateColumn <= TO_DATE(c#_date, 'YYYY/MM/DD HH24:MI:SS')
DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss")
在家里,所以我无法运行它,但应该可以。
要使用 where 子句构建字符串,您可以这样做:
string someQuery = "SELECT * FROM aTable WHERE someDateColumn <= TO_DATE('" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "', 'YYYY/MM/DD')"
如果您想使用特定日期而不是 DateTime.Now,只需将保存它的变量放在那里即可。
【讨论】: