dotNet如何处理参数化日期,其中程序化日期没有时间,但sql日期有时间

时间:2010-07-16 09:22:41

标签: vb.net parameters sqlcommand

可怕的头衔对吗?我以为我会看到Stack溢出比我测试的东西更快,而我从其他工作中获得了一千次中断:)

我正在更新一个旧的VB网络应用程序,并尝试重构一些逻辑。该应用程序在几个表中查找单个日期的数据,并将该视图写入文件。

在SQL中编写查询我得到相当于

SELECT * FROM table
WHERE CAST(FLOOR(CAST(table.date AS float))AS datetime) = '15-Jul-2010'

理想情况下我会使用

SELECT * FROM table WHERE date=@input

并将日期对象作为参数添加到System.Data.SqlClient.SqlCommand实例

这两者是否具有可比性?我能得到我期望的结果吗?

1 个答案:

答案 0 :(得分:3)

是的,两者具有可比性,SqlClient库将.net类型转换为sql类型。你仍然需要在sql查询中截断时间部分,所以你可以使用类似的东西:

SELECT * FROM table WHERE FLOOR(CAST(table.date AS float)) = FLOOR(CAST(@input AS float))

您不必转换回日期时间,但可以只比较浮点数。