2

可怕的标题对吧?以为我会看看堆栈溢出是否比我在其他工作受到一千次中断时测试某些东西更快:)

我正在更新一个旧的 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 实例

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

4

1 回答 1

3

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

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

您不必转换回日期时间,而只需比较浮点数。

于 2010-07-16T09:35:50.617 回答