程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 一個得到在兩個日期之間的休息日的SQL Server 的函數

一個得到在兩個日期之間的休息日的SQL Server 的函數

編輯:關於SqlServer
 其實這個函數不是SQL Server 提供的,是豆腐編寫的,大家不要因為豆腐篇了大家
就用石頭砸豆腐:)其實 自從這個函數生成以後我們在使用的時候,是根本不可能區分出這個
函數是SQL Server 的還是 自定義的函數,這個就是SQL2K 給我們帶來的一個新的特點之一
我們先看看這個函數的意義,其實 最初向我要這個函數的人是 藍,不過當時還沒有 SQL2K,
現在有了SQL2k 我也好容易找到了一些時間來寫這個函數了.這個函數的功能是在任意的兩個
時間之間得到 休息的天數。目前只是處理了雙修日:)
好了,下面我們來看看這個函數,順便通過這個函數我們可以來學習使用一下SQL2k的這個新的功能

CREATE FUNCTION GetVac(@Start datetime,@End datetime)
RETURNS integer AS
BEGIN
declare
@intNum integer,
@intAllDay integer,
@i integer,
@intWeekDay integer,
@tempDateTime datetime,
@intVac integer
select @intAllDay=DateDiff(dd,@Start,@End)
select @i=0
select @intVac=0
while(@i<@intAllDay)
begin
select @tempDateTime=DateAdd(dd,@i,@Start)
select @intWeekDay=datepart(dw,@tempDateTime)-1
if(@intWeekDay=6) or (@intWeekDay=0)
begin
select @intVac=@intVac+1
end
select @i=@i+1
end
return @intVac
END
好的,這個函數生成以後,我們就可以使用這個函數了,比如:
select aa=dbo.GetVac(2000-12-10 00:00:00.000,'2000-12-18 00:00:00.000')
得到的結果是:3 呵呵

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved