创建一个函数:
Create FUNCTION [dbo].[GetWorkDateDiff] ( @begin_date datetime, @days int ) RETURNS datetime AS BEGIN DECLARE @WorkDays int=1 declare @weekday Nvarchar(9) Declare @End_Date datetime while (@WorkDays<@days) begin select @weekday=datename(weekday,dateadd(d,@WorkDays,@begin_date)) if (@weekday='星期六' or @weekday='星期日' or @weekday='Saturday' or @weekday='Sunday') set @days=@days+1 set @WorkDays=@WorkDays+1 end RETURN Dateadd(dd,@WorkDays,@Begin_Date) END
测试函数:
DECLARE @OldDate Datetime='2012-4-24' DECLARE @Days int=5 --直接加@Days个工作日 SELECT [dbo].[GetWorkDateDiff](@OldDate,@Days) /* 2012-05-01 00:00:00.000 */
你循環 增加天數,一天一天增加,直到增加夠你需要的天數。
並且每增加一天,判斷是否是星期六或者星期天,如果是,就多增加天,如果不是,就跳過。
你那个day中的5是什么意思?
那你进行循环判定,当是星期六或者星期天的时候就判定不添加,datetime有这些函数。
关注中~
数值比较小的时候:循环判断
数值比较大的时候:用DAY=day+day/5*2 然后直接加