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
展开
 我来答
benben239
推荐于2020-12-07 · TA获得超过864个赞
知道小有建树答主
回答量:612
采纳率:100%
帮助的人:492万
展开全部

你这写法我有点看不懂

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天

printf59277
2015-10-30 · TA获得超过1080个赞
知道大有可为答主
回答量:1812
采纳率:33%
帮助的人:1283万
展开全部
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
星期六星期天的你再调整下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式