0
我是SQL新手,有人可以帮助将以下SQL语句转换为函数。这个声明起作用,我只是不能创建一个函数。将SQL转换为函数
declare @start datetime, @end datetime
set @start = '2012/07/25 09:00:00'
set @end = '2012/07/25 12:55:00';
with weeks as (
select @start as WeekStart
, dateadd(hh, 24, dateadd(dd, 0, datediff(dd, 0, dateadd(dd, 6 - (@@datefirst + datepart(dw, @start)) % 7, @start)))) as WeekEnd
union all
select dateadd(hh, 48, WeekEnd)
, dateadd(hh, 24, dateadd(dd, 0, datediff(dd, 0, dateadd(dd, 13 - (@@datefirst + datepart(dw, WeekEnd)) % 7, WeekEnd)))) as WeekEnd
from weeks
where dateadd(hh, 48, WeekEnd) <= @end
)
select Seconds/(60 * 60) as Hours
from (
select sum(datediff(ss, WeekStart, case when @end < WeekEnd then @end else WeekEnd end)) as Seconds
from weeks) x
你会喜欢这个函数返回?您希望接受哪些参数?还有什么我们可以为你做的吗?你已经发布了不完整的SQL,并没有规定你真正在寻找什么样的输出。请编辑您的问题,并提供有关您想要执行的操作的更多详细信息,并添加其他缺少的SQL。很难从这篇文章中看出你想要获得什么。 – 2012-07-25 02:58:16
感谢您的快速回复。此SQL语句以开始日期和结束日期为准,并在它们之间返回我不包含周末的我。我用两个变量复制了完整的SQL。所以我想这个函数接受两个参数,StartDate和EndDate并返回我的小时数。 – 2012-07-25 03:02:46