SQL:如何获取本周的星期日

SQL:如何获取本周的星期日,sql,sql-server-2008,date,Sql,Sql Server 2008,Date,我想得到本周的最后一天(星期日),给出任何时间戳。我试着按照脚本,但它返回周六作为最后一天,而不是我预期的周日 Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week' 欢迎回答 如果您将标准DATEFIRST从星期日(7)更改为星期一(1),它将起作用: 在命令前面加上set datefirst 1DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6) 我知

我想得到本周的最后一天(星期日),给出任何时间戳。我试着按照脚本,但它返回周六作为最后一天,而不是我预期的周日

Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week' 

欢迎回答

如果您将标准DATEFIRST从星期日(7)更改为星期一(1),它将起作用:


在命令前面加上
set datefirst 1

DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6)
我知道这篇文章很老,但通过谷歌搜索时,这篇文章排在第一位


更新总是好的。

以下内容在周日不适用于某些
DATEFIRST
(语言):

DATEADD(wk,DATEDIFF(wk,0,GETDATE()),6)
另外,设置
DATEFIRST
并不总是一个选项(函数不能使用
SET DATEFIRST

这里有一个是通用的:

  • 从星期一开始,准备好几个星期
  • 始终返回当前周的星期日
  • 无论“日期优先”设置如何,都可以工作
  • 不会更改日期优先,因此可以在函数中使用
DECLARE@today-DATE=getdate();(或任何其他日期);
选择dateadd(day,((15-@@datefirst)-datepart(dw,@today))%7,@today);

那么您想将本周改为周一->周日?SQL Server中的默认值是星期天->星期六。也请参阅本星期六是第7天,星期从星期天开始。
SET DATEFIRST 1

Select DATEADD(DAY , 7-DATEPART(WEEKDAY,GETDATE()),GETDATE()) AS 'Last Day Of Week'