请教一条UPDATE语句,谢谢!

reanna 2003-09-10 07:28:07
表T中两个日期字段:date1和date2

如果date1中日期是n周的周四至n+1的周三,
则date2=n+2周的周一

我是这样写的:

SET DATEFIRST 1

--n周的周四至周日

UPDATE T SET date2=DATEADD(Day,15-DATEPART(Weekday,date1),date1)
WHERE DATEPART(Weekday,date1)>3 AND DATEPART(Weekday,date1)<8

--n+1周的周一至周三

UPDATE T SET date2=DATEADD(Day,8-DATEPART(Weekday,date1),date1)
WHERE DATEPART(Weekday,date1)>0 AND DATEPART(Weekday,date1)<4

SET DATEFIRST 7


怎么样能够不用SET DATEFIRST 1?
并且最好一条UPDATE语句搞定?
谢谢!

...全文
58 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
reanna 2003-09-11
  • 打赏
  • 举报
回复
update T set date2=case
when DATEPART(Weekday,date1) in (5,6,7,1)
then DATEADD(Day,15-DATEPART(Weekday,date1),date1)
when DATEPART(Weekday,date1) in (2,3,4)
then DATEADD(Day,8-DATEPART(Weekday,date1),date1)
else date2 end

这个不对

因为then DATEADD(Day,15-DATEPART(Weekday,date1),date1)
也与DATEFIRST的取值有关,所以还是要之前SET DATEFIRST 1
如何能不改DATEFIRST的设置哪?

pengdali 2003-09-10
  • 打赏
  • 举报
回复
update T set date2=case
when DATEPART(Weekday,date1) in (5,6,7,1)
then DATEADD(Day,15-DATEPART(Weekday,date1),date1)
when DATEPART(Weekday,date1) in (2,3,4)
then DATEADD(Day,8-DATEPART(Weekday,date1),date1)
else date2 end
txlicenhe 2003-09-10
  • 打赏
  • 举报
回复
大力今天还来答题啊。
pengdali 2003-09-10
  • 打赏
  • 举报
回复
SET DATEFIRST 1


update T set date2=case
when DATEPART(Weekday,date1)>3 AND DATEPART(Weekday,date1)<8
then DATEADD(Day,15-DATEPART(Weekday,date1),date1)
when DATEPART(Weekday,date1)>0 AND DATEPART(Weekday,date1)<4
then DATEADD(Day,8-DATEPART(Weekday,date1),date1)
else date2 end


SET DATEFIRST 7
zjcxc 元老 2003-09-10
  • 打赏
  • 举报
回复
不知道有没有理解错误.
zjcxc 元老 2003-09-10
  • 打赏
  • 举报
回复
在日期上进行处理吧.

根据你的规则,如果将date1+4,则date2=date1+4+一周(7)

所以可以直接写这样的处理语句:
update UPDATE T SET date2=date1+11
runsoft 2003-09-10
  • 打赏
  • 举报
回复
UP
longji 2003-09-10
  • 打赏
  • 举报
回复
根据你设的模式(SET DATEFIRST 1)或是机器的默认值,你可心把date1字段的天数据加3或加4,然后相应的判断条件就可以改到一周内了,就可以一个语句完成了

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧