【发布时间】:2013-09-03 09:37:06
【问题描述】:
我需要获取本周星期一和星期日的日期。
我得到了这个 atm,但是当我将当前日期设置为同一个星期一时,它没有给出正确的结果。
DECLARE @date datetime
set @date = '2013-09-01 11:15:51'
SELECT DATEADD(day,
-1 - (DATEPART(dw, CONVERT (date, @date)) + @@DATEFIRST -2) % 7,
CONVERT (date, @date)
) AS ThisModay,
DATEADD(day, 6, CONVERT (date, @date)) as NextSunday
当我尝试将 2013-08-25 设为星期一时,但应该是 2013-09-01
我该怎么做? , 始终将当前周作为结果。 (当前日期应始终与两个结果相同或介于两者之间)
【问题讨论】:
-
如果@date 是一周的一半,你想要日期之前的星期一和之后的星期日吗?
-
上次查看时,20130825 和 20130901 都是星期天。正确答案如何?
-
@RobWhite 是的。日期应始终介于两者之间或相等。
-
@NiclasSchumacher 我的问题很愚蠢,因为我认为您已经解释过了。但我的解决方案和其他一些解决方案应该可以解决问题。
-
@RobWhite 使用您的解决方案,结果延迟了 1 天,所以从周二到周一。但是在我用 1 替换 2 之后,我得到了正确的结果!但是,我现在的问题是,为什么你的使用 2,而我的使用 1?关于周开始或?
标签: sql-server