如何在sql server 2008中获取一周的第一天和一周的最后一天?

时间:2014-01-24 10:48:39

标签: sql sql-server date

当我们输入一周中的任何一天时,如何获得一周中的第一天和一周的最后一天?

例如,如果我们输入日期,则应显示第一天(星期一)和最后一天(星期五)。 也就是说,如果我们进入2014年1月24日,则应显示2014年1月20日和2014年1月24日。

此致

4 个答案:

答案 0 :(得分:15)

以下是您可以这样做的方法:

DECLARE @yourdate date = getdate()
Select dateadd(ww, datediff(ww, 0, @yourdate), 0)
Select dateadd(ww, datediff(ww, 0, @yourdate), 4)

您将@yourdate设置为您想要的日期。第一个SELECT将为您提供第一天,第二个SELECT将为您提供最后一个日期

答案 1 :(得分:2)

试试这个

SELECT DATEADD(wk, DATEDIFF(wk, 6, '5/13/2005'), 6)
SELECT DATEADD(wk, DATEDIFF(wk, 5, '5/13/2005'), 5)

<强>(OR)

Declare @Date datetime
Det @Date = '2012-04-12'
Delect @Date - DATEPART(dw, @Date) + 1 FirstDateOfWeek,
       @Date + (7 - DATEPART(dw, @Date)) LastDateOfWeek

答案 2 :(得分:2)

这解决了它并且也包裹了年终:

SELECT DATEADD(wk, DATEDIFF(d, 0, '01 January 2017') / 7, 0)

答案 3 :(得分:0)

在已加载日历日期的情况下,可以对表=)

中存在的所有年份进行分组。
select 
Y,
M,
(Select dateadd(ww, datediff(ww, 0, dt), 0) ) wk_str_dt ,
(Select dateadd(ww, datediff(ww, 0, dt), 4)  )wk_end_dt , 
dt recd_crt_dt
from [tcalendar]
where  isWeekday= 1 
AND DW = 2 -- only mondays
order by Y, W