1. 程式人生 > >SQL計算時間差並排除週末

SQL計算時間差並排除週末

CREATE FUNCTION DI_FN_GET_WorkDay 
(@begin DATETIME , @end DATETIME )
RETURNS int 
BEGIN 
DECLARE @i INT , @j INT SET @i = 0 SET @j = 0 
IF @end > @begin 
	BEGIN 
	WHILE DATEDIFF(d, DATEADD(d, @i, @begin), @end) <> 0 
	BEGIN IF DATEPART(weekday, DATEADD(d, @i, @begin)) NOT IN ( 1, 7 ) 
	SET @j = @j + 1 
	SET @i = @i + 1 
	END 
END 
SELECT @j = ( @j + 1 ) * 24 * 60 - DATEDIFF(Minute, CAST(CONVERT(VARCHAR(10), @begin, 120) AS DATETIME), @begin) 
- DATEDIFF(Minute, @end, CAST(CONVERT(VARCHAR(10), @end + 1, 120) AS DATETIME)) 
RETURN @j END

其中可以根據自己需要更改下函式得到對應的小時數,分鐘數或者秒數等