因為要計算時間區間內沒有周休二日、午休時間的真正上班時間
之前寫在asp、php裡感覺比較慢也覺得code不好維護。
為什麼SQL沒有只抓上班時間的函數= =
研究了一下自訂函數的方法,因為第一次接觸有錯請告訴我,謝謝
撰寫的位置:
登入SQL Server Management Studio後>新增查詢
CODE:
–登入你的DB
USE Tbcwmonet;
GO
–如果dbo.GetWorkMinute這個函已存在就刪掉
IF OBJECT_ID (N’dbo.GetWorkMinute’, N’FN’) IS NOT NULL
DROP FUNCTION dbo.GetWorkMinute;
GO
CREATE FUNCTION GetWorkMinute
(
@要帶入的值1 資料型態 ,
@要傳入的值2 資料型態,
@…………………………
)
RETURNS int
AS
begin
return @要傳回的值
end
說明
Begin….END:類似C、Java、PHP的大括號{、}用來把程式的區塊標出來
EX:
(計算日期區間中的六、日有幾天)
while @i<=DateDiff(day,@startDate,@endDate)
begin
set @x=DateAdd(day,@i,@startDate)
if DatePart(weekday,@x)=1 or DatePart(weekday,@x)=7
set @weekdays=@weekdays+1
set @i=@i+1
end
變數要用declare宣告,並用@開頭,值給變數時要用set
EX:
declare @DayMinute int,@s_Minute DATETIME
set @DayMinute = 8*60
set @s_Date =”2008/01/01”
寫完後按執行
SQL server 2005自訂函數會放在DB中>可程式性>函數>純量值函數的資料夾中。