Sql 如何在存储过程中将datetime转换为周范围以进行分组

Sql 如何在存储过程中将datetime转换为周范围以进行分组,sql,sql-server,Sql,Sql Server,e、 g 使用如下所示的存储过程在生成的记录集中创建其他列“week range”: Date | Name 1/1/13 | John 1/3/13 | Mary 1/5/13 | Joe 1/8/13 | Mary 1/9/13 | Bob 我需要执行此操作,以便按周分组,并用正确的序列标签显示在图形中。请尝试以下查询。我使用生日作为日期列 Date | Name | Week Range 1/1/13 | John | 12/31/2012 to 01/06/13 1/3

e、 g

使用如下所示的存储过程在生成的记录集中创建其他列“week range”:

Date | Name

1/1/13 | John

1/3/13 | Mary

1/5/13 | Joe

1/8/13 | Mary

1/9/13 | Bob

我需要执行此操作,以便按周分组,并用正确的序列标签显示在图形中。

请尝试以下查询。我使用生日作为日期列

Date | Name | Week Range

1/1/13 | John |  12/31/2012 to 01/06/13

1/3/13 | Mary |  12/31/2012 to 01/06/13

1/5/13 | Joev |  12/31/2012 to 01/06/13

1/8/13 | Mary |  01/07/2013 to 01/13/13

1/9/13 | Bob  |  01/07/2013 to 01/13/13
SELECT [Date],
       [Name],
       CONVERT(VARCHAR(10),DATEADD(day,1-DATEPART(weekday,[Date]),[Date]),3)
       + ' to '
       + CONVERT(VARCHAR(10),DATEADD(day,7,DATEADD(day,1-DATEPART(weekday,[Date]),[Date])),3)
FROM   Table
SELECT   BirthDate,Name,
    CONVERT(VARCHAR(10), DATEADD(dd, -(DATEPART(dw, BirthDate)-1), BirthDate))  + ' to ' + 
    CONVERT(VARCHAR(10),DATEADD(dd, 7-(DATEPART(dw, BirthDate)), BirthDate)) WeekRange    
FROM Employee
group BY BirthDate, DATEADD(dd, -(DATEPART(dw, BirthDate)-1), BirthDate),DATEADD(dd, 7-(DATEPART(dw, BirthDate)), BirthDate),FirstName
ORDER BY BirthDate