0

我正在使用SQL Server 2008 R2。我需要得到星期日weekno,并且我已经有了查询,但它显示了错误的数据。我能做什么 ?我想要获得星期日WeekNo?

它显示了2而不是1。例如,06-JAN-2013(WeekNo - 1)

我的查询是

SELECT DATEPART (week, '01-13-2013 23:59:59.000') As WeekNo1 , 
    DATEPART (week, '01-06-2013 23:59:59.000') As WeekNo2 , 
    DATEPART (week, '12-30-2012 23:59:59.000') As WeekNo3 , 
    DATEPART (week, '12-23-2012 23:59:59.000') As WeekNo4 , 
    DATEPART (week, '12-16-2012 23:59:59.000') As WeekNo5 , 
    DATEPART (week, '12-09-2012 23:59:59.000') As WeekNo6 

回答

1

查询:

SQLFIDDLEExample

SET DATEFIRST 1 
SELECT DATEPART (week, '01-13-2013 23:59:59.000') As WeekNo1 , 
     DATEPART (week, '01-06-2013 23:59:59.000') As WeekNo2 , 
     DATEPART (week, '12-30-2012 23:59:59.000') As WeekNo3 , 
     DATEPART (week, '12-23-2012 23:59:59.000') As WeekNo4 , 
     DATEPART (week, '12-16-2012 23:59:59.000') As WeekNo5 , 
     DATEPART (week, '12-09-2012 23:59:59.000') As WeekNo6 

结果:

| WEEKNO1 | WEEKNO2 | WEEKNO3 | WEEKNO4 | WEEKNO5 | WEEKNO6 | 
------------------------------------------------------------- 
|  2 |  1 |  53 |  52 |  51 |  50 | 
+0

初始/原始'DATEFIRST'设置应该在'SELECT ...'后恢复。 –

+0

感谢您的回复@justin,我接受你的回答.. –

2

您需要将DATEFIRST属性设置为星期的开始日期。这指定了一周中的第一天。

要确定您的服务器的一周的第一天是什么,你将使用:

SELECT @@DATEFIRST 

然后,如果你需要修改的值,你可以使用:

SET DATEFIRST 1; 

SELECT DATEPART (week, '01-13-2013 23:59:59.000') As WeekNo1 , 
    DATEPART (week, '01-06-2013 23:59:59.000') As WeekNo2 , 
    DATEPART (week, '12-30-2012 23:59:59.000') As WeekNo3 , 
    DATEPART (week, '12-23-2012 23:59:59.000') As WeekNo4 , 
    DATEPART (week, '12-16-2012 23:59:59.000') As WeekNo5 , 
    DATEPART (week, '12-09-2012 23:59:59.000') As WeekNo6 

SQL Fiddle with Demo

相关问题