要获得一周的第一天使用:
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上的文档
以下内容适用于您考虑的一周中的第一天(星期日,星期一等),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)