![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
SQL中加天数计算日期,遇到周六周日自动顺延到星期一,求解
SETDATEFIRST1;--设置星期一是一个星期的第1天selectCASEDATEPART(dw,DATEADD(d,6,'20151029'))WHEN6THEN...
SET DATEFIRST 1;-- 设置星期一是一个星期的第1天
select
CASE DATEPART(dw,DATEADD(d,6,'20151029'))
WHEN 6 THEN DATEADD(d,6 + 2,'20151029') --若是周六顺延2天
WHEN 7 THEN DATEADD(d,6 + 1,'20151029') --若是周日顺延1天
ELSE DATEADD(d,6,'20151029')
END
得出结果是2015-11-04
应该是:2015-11-06才对
不知道我这个哪里错了
有没有大神帮我修改一下或者帮我写一个,万分感谢。
我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04 展开
select
CASE DATEPART(dw,DATEADD(d,6,'20151029'))
WHEN 6 THEN DATEADD(d,6 + 2,'20151029') --若是周六顺延2天
WHEN 7 THEN DATEADD(d,6 + 1,'20151029') --若是周日顺延1天
ELSE DATEADD(d,6,'20151029')
END
得出结果是2015-11-04
应该是:2015-11-06才对
不知道我这个哪里错了
有没有大神帮我修改一下或者帮我写一个,万分感谢。
我这个意思是当天日期是20151029,加上6天,去除周六周日的话得到日期应该是2015-11-06
而不是2015-11-04 展开
2个回答
展开全部
你这写法我有点看不懂
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 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天 如果得到的日期是周六就加两天,得到的日期是周日就加一天吗?
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
星期六星期天的你再调整下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询