SQL中加天数计算日期,遇到周六周日自动顺延到星期一,求解
答案:2 悬赏:80 手机版
解决时间 2021-11-11 02:37
- 提问者网友:斑駁影
- 2021-11-10 02:12
SQL中加天数计算日期,遇到周六周日自动顺延到星期一,求解
最佳答案
- 五星知识达人网友:荒野風
- 2021-11-10 02:48
你这写法我有点看不懂
SELECt
CASE
WHEN DATEPART(ww, 当前日期) / 7 -1 = 6 THEN DATEADD(dd, 2, 当前日期)
WHEN DATEPART(ww, 当前日期) / 7 -1 = 7 THEN DATEADD(dd, 1, 当前日期)
ELSE 当前日期
END
FROM [表名字]追问我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04追答SELECt
CASE
WHEN DATEPART(dw, 当前日期) = 6 THEN DATEADD(dd, 2, 当前日期)
WHEN DATEPART(dw, 当前日期) = 7 THEN DATEADD(dd, 1, 当前日期)
ELSE 当前日期
END
FROM [表名字]这样对吗
如果是周6加2天
如果是周7加1天
SELECt
CASE
WHEN DATEPART(ww, 当前日期) / 7 -1 = 6 THEN DATEADD(dd, 2, 当前日期)
WHEN DATEPART(ww, 当前日期) / 7 -1 = 7 THEN DATEADD(dd, 1, 当前日期)
ELSE 当前日期
END
FROM [表名字]追问我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04追答SELECt
CASE
WHEN DATEPART(dw, 当前日期) = 6 THEN DATEADD(dd, 2, 当前日期)
WHEN DATEPART(dw, 当前日期) = 7 THEN DATEADD(dd, 1, 当前日期)
ELSE 当前日期
END
FROM [表名字]这样对吗
如果是周6加2天
如果是周7加1天
全部回答
- 1楼网友:独钓一江月
- 2021-11-10 03:57
select DATEADD(d,6,'20151029') 结果 2015-11-04 00:00:00.000
select DATEPART(dw,DATEADD(d,6,'20151029')) 结果 4
所以不会进入到你的 when里面去,得到的是最后的结果DATEADD(d,6,'20151029')
你的需求是什么?是日期+6天 如果得到的日期是周六就加两天,得到的日期是周日就加一天吗?追问对没错
我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04
遇到周六加2天,遇到周日加1天追答20151029 是星期四 ,+6天 ,这个六天里面跨越了周六和周日,如果要去除这两天怎么会变成20151106呢,去掉以后应该是20151102才对 。 你就是想6个工作日吧,
如果当天是星期六 ,是不是要区分处理?
select CASE
when DATEPART(dw,'20151029') >1 and DATEPART(dw,'20151029') <=6 then DATEADD(d,8,'20151029')
WHEN DATEPART(dw,'20151029')=7 THEN DATEADD(d,8,'20151029') --若是周六顺延2天
WHEN DATEPART(dw,'20151029')=1 THEN DATEADD(d,7,'20151029') --若是周日顺延1天
ELSE DATEADD(d,6,'20151029')
end
星期六星期天的你再调整下。追问是五天工作制
select DATEPART(dw,DATEADD(d,6,'20151029')) 结果 4
所以不会进入到你的 when里面去,得到的是最后的结果DATEADD(d,6,'20151029')
你的需求是什么?是日期+6天 如果得到的日期是周六就加两天,得到的日期是周日就加一天吗?追问对没错
我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04
遇到周六加2天,遇到周日加1天追答20151029 是星期四 ,+6天 ,这个六天里面跨越了周六和周日,如果要去除这两天怎么会变成20151106呢,去掉以后应该是20151102才对 。 你就是想6个工作日吧,
如果当天是星期六 ,是不是要区分处理?
select CASE
when DATEPART(dw,'20151029') >1 and DATEPART(dw,'20151029') <=6 then DATEADD(d,8,'20151029')
WHEN DATEPART(dw,'20151029')=7 THEN DATEADD(d,8,'20151029') --若是周六顺延2天
WHEN DATEPART(dw,'20151029')=1 THEN DATEADD(d,7,'20151029') --若是周日顺延1天
ELSE DATEADD(d,6,'20151029')
end
星期六星期天的你再调整下。追问是五天工作制
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯