Vb.net 如果编程日期没有时间,但sql日期有时间,dotNet如何处理参数化日期

Vb.net 如果编程日期没有时间,但sql日期有时间,dotNet如何处理参数化日期,vb.net,parameters,sqlcommand,Vb.net,Parameters,Sqlcommand,可怕的标题,对吗?我想看看堆栈溢出是否比我在其他工作中受到1000次干扰时测试某个东西快:) 我正在更新一个旧的VB net应用程序,并尝试在运行过程中重构一些逻辑。该应用程序在几个表中查找单个日期的数据,并将该视图写入文件 用SQL编写查询,我将得到 SELECT * FROM table WHERE CAST(FLOOR(CAST(table.date AS float))AS datetime) = '15-Jul-2010' 理想情况下,我会使用 SELECT * FROM table

可怕的标题,对吗?我想看看堆栈溢出是否比我在其他工作中受到1000次干扰时测试某个东西快:)

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

用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实例中


这两个有可比性吗?我会得到我期望的结果吗?

是的,两者是可比较的,SqlClient库会将.net类型转换为sql类型。您仍然需要截断sql查询中的时间部分,因此可以使用以下内容:

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

您不必转换回datetime,只需比较浮动即可。

什么是table.date sql类型?因此堆栈溢出更快!:-)