【发布时间】:2021-06-15 03:25:06
【问题描述】:
这比看起来更难。我需要一个函数来计算日期范围内给定工作日的数量。我不想要任何循环或递归 SQL。有数以百万计的例子就是这样做的。我需要一个快速的计算函数。
函数的输入是 weekday, fromdata, todate
-- counting fridays
set datefirst 1
SELECT dbo.f_countweekdays(5, '2011-07-01', '2011-07-31'),
dbo.f_countweekdays(5, '2011-07-08', '2011-07-15'),
dbo.f_countweekdays(5, '2011-07-09', '2011-07-15'),
dbo.f_countweekdays(5, '2011-07-09', '2011-07-14')
预期结果:
5, 2, 1, 0
【问题讨论】:
-
很抱歉投票结束。误读了问题。
-
我自己的版本现在可以使用,将其作为答案发布是错误的还是应该将其添加为问题的一部分?它与当前的答案非常不同。
-
您可以将其作为答案发布,我认为您也应该能够接受自己的答案。我认为您可以接受它是有时间限制的。
-
米凯尔。谢谢。我认为不应允许人们选择自己的答案。那会导致滥用。同样在这种情况下,我考虑的时间比你要长得多。我没有资格估计哪个功能最快。在这种情况下,这将是我将使用的功能。如何比较它们有什么好的建议吗?
-
尝试使用数字表进行性能测试并执行该函数 100000 次。花了 10 秒,我们两个版本之间的差异是 60 毫秒。不确定测试是否好:)。
标签: sql sql-server-2008 tsql math