首页 新闻 搜索 专区 学院

时间类型增加天数,去掉星期六星期天

0
悬赏园豆:50 [已解决问题] 解决于 2012-06-01 14:36

两个表

表一:

ID BillDate CheckDate

1   2012-04-20 2012-04-27

表二:

ID RelationID Day

1        1        5

RelationID 是和表一ID关联的ID

每次增加表二信息的时候,都根据我填写的Day(天数)来对应更新

CheckDate的字段信息,但是这里主要要考虑到另外一个问题,就是

在增加天数的时候希望不要把星期六星期天给算进去,直接增加。

dinoy的主页 dinoy | 初学一级 | 园豆:160
提问于:2012-04-24 13:51
< >
分享
最佳答案
0

创建一个函数:

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
*/
收获园豆:40
邀月 | 高人七级 |园豆:25358 | 2012-04-24 21:19
其他回答(5)
0

你循環 增加天數,一天一天增加,直到增加夠你需要的天數。

並且每增加一天,判斷是否是星期六或者星期天,如果是,就多增加天,如果不是,就跳過。

收获园豆:10
無限遐想 | 园豆:3740 (老鸟四级) | 2012-04-24 14:03
0

你那个day中的5是什么意思?

┢┦偉 | 园豆:1240 (小虾三级) | 2012-04-24 15:08
0

那你进行循环判定,当是星期六或者星期天的时候就判定不添加,datetime有这些函数。

雨之秋水 | 园豆:645 (小虾三级) | 2012-04-24 15:12
0

关注中~

Philomena | 园豆:154 (初学一级) | 2012-04-24 15:26
0

数值比较小的时候:循环判断

数值比较大的时候:用DAY=day+day/5*2  然后直接加

硕硕 | 园豆:212 (菜鸟二级) | 2012-04-24 17:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册