【发布时间】:2016-08-03 14:55:44
【问题描述】:
我在表中有 5l 记录。需要查询...哪个是查询快,输入参数@RegistrationFrom DATE,@RegistrationTo DATE
方法一:
WHERE
CAST(Act.RegistrationOn AS DATE) BETWEEN CAST(@RegistrationFrom AS DATE)
AND CAST(@RegistrationTo AS DATE)
方法 #2 - 转换为日期时间:
DECLARE @From DATETIME, @Todate DATETIME;
SELECT @From = @RegistrationFrom;
SELECT @Todate = DATEADD(day, 1, @RegistrationTo);
WHERE
Act.RegistrationOn BETWEEN @From AND @Todate
方法#3:
在@From 和 @Todate 之间转换(VARCHAR,Act.RegistrationOn,101)
我得到比上面 1,2 更快的响应方法 3。 它是如何工作的?
【问题讨论】:
-
你为什么不测试它?这是确定您的配置的唯一方法
-
你为什么要
casting as date方法1? -
我们从 UI 中传递 from & To date 作为过滤器
-
这里要非常小心!您的
BETWEEN CAST(@RegistrationFrom AS DATE) AND CAST(@RegistrationTo AS DATE)不会包含最后一天的条目,如果它们有时间部分的话! -
这个问题解决了吗?您需要进一步的帮助吗?请给我一个提示:如果您在最佳答案的投票柜台下方勾选接受检查,那就太好了。这将 1) 将此问题标记为已解决 2) 让追随者更容易找到最佳解决方案 3) 向回答者支付积分和 4) 向您支付积分。一旦您自己越过 15 点边界,您 - 另外 - 被要求对贡献进行投票。这是说谢谢的方式。编码快乐!
标签: sql sql-server