我想在任何时间戳给出当周的最后一天(星期日)。我尝试了下面的脚本,但它按照我的预期将星期六作为最后一天而不是星期日。
Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'
欢迎任何答案!!
答案 0 :(得分:11)
如果您将标准DATEFIRST从星期日(7)更改为星期一(1),它将起作用:
SET DATEFIRST 1
Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'
答案 1 :(得分:1)
使用set datefirst 1
答案 2 :(得分:0)
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 6)
我知道这篇文章很旧,但是通过Google搜索时,这篇文章排在顶部。
总是很好地进行更新。
答案 3 :(得分:0)
以下在某些DATEFIRST
(语言)的星期天不起作用:
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 6)
此外,设置DATEFIRST
并非总是一种选择(功能不能使用SET DATEFIRST
)
这是通用的:
DATEFIRST
设置如何,都可以工作DATEFIRST
,因此可以在函数中使用 DECLARE @today DATE = getdate(); (or any other date);
SELECT dateadd(day, ((15-@@datefirst) - datepart(dw, @today)) % 7, @today);