获取周的开始和结束日期?在Sql server中?

Sur*_*har 6 sql-server-2008

在sql中,如何获取特定月份的开始和结束日期.你能帮助我吗.

Nik*_*vić 6

要获得一周的第一天使用:

select dateadd(wk, datediff(wk, 0, getdate()), 0)
Run Code Online (Sandbox Code Playgroud)

最后一天将是第一天+6:

select dateadd(wk, datediff(wk, 0, getdate()), 0) + 6
Run Code Online (Sandbox Code Playgroud)

警告:这是文化敏感的.检查@@ datefirst上的文档


Gar*_*thD 5

以下内容适用于您考虑的一周中的第一天(星期日,星期一等),SET DATEFIRST如果您想要更改默认值,请确保使用.SET DATEFIRST 1将在星期一的第一天进行.

SELECT  DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
        DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
Run Code Online (Sandbox Code Playgroud)

编辑

我刚刚重新阅读了您的请求,我认为您可能会追求与上述内容不同的内容.如果你想要一个月的第一天和最后一周的这一天,这将有助于:

SELECT  DATENAME(WEEKDAY, DATEADD(DAY, 1 - DATEPART(DAY, GETDATE()), GETDATE())) [FirstDayOfMonth],
        DATENAME(WEEKDAY, DATEADD(DAY, - DATEPART(DAY, DATEADD(MONTH, 1, GETDATE())), DATEADD(MONTH, 1, GETDATE()))) [LastDayOfMonth]
Run Code Online (Sandbox Code Playgroud)