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