在给定任何时间戳的情况下,我想获得本周的最后一天(星期日)。我尝试了以下脚本,但它返回星期六作为最后一天,而不是我预期的星期日。
Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'
欢迎任何答案!
在给定任何时间戳的情况下,我想获得本周的最后一天(星期日)。我尝试了以下脚本,但它返回星期六作为最后一天,而不是我预期的星期日。
Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'
欢迎任何答案!
如果您将标准 DATEFIRST 从星期日 (7) 更改为星期一 (1),它将起作用:
SET DATEFIRST 1
Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'
DATEADD(wk, DATEDIFF(wk,0,GETDATE()), 6)
我知道这篇文章很旧,但是当通过谷歌搜索时,这篇文章在顶部。
总是很高兴更新。
为您的命令添加前缀set datefirst 1
以下不适用于某些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);