SQL:如何获得本周的周日

时间:2012-07-20 13:55:24

标签: sql sql-server-2008 date

我想在任何时间戳给出当周的最后一天(星期日)。我尝试了下面的脚本,但它按照我的预期将星期六作为最后一天而不是星期日。

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

欢迎任何答案!!

4 个答案:

答案 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);