2017-08-08 56 views
1

我希望得到周开始日期和星期结束日期使用周数如何在SQL Server中使用星期编号获取星期开始和结束日期?

例如

输入

我的周数= 32

输出

WeekStartingDate  WeekEndingDate 
------------------------------------ 
06-08-2017   12-08-2017 

注意

没有日期。仅通过使用周数。可能吗?

更新

Date Output

+0

请参考https://social.msdn.microsoft。 COM /论坛/ SQLSERVER/EN-US/cf233caf-4CCD-4bca-ADD2-b5eb467f2dd4/CONVER T-周数到日期的-1天的,是周?论坛= TRANSACTSQL。在那里你可以找到如何获得给定周数的日期。这并不能完全回答你的问题,但可以根据本文建议的方法构建解决方案。 –

+0

结果不一样,因为'@@ DATEFIRST',尝试'SELECT @@ DATEFIRST',你会理解我的意思,当datepart是星期(wk,ww)或星期几(dw)时,返回值取决于通过使用SET DATEFIRST设置的值。 – Sami

回答

1

我想这样的....

DECLARE @WK INT SET @WK = 32 
    DECLARE @YR INT SET @YR = 2017 

    SELECT DATEADD (WEEK, @WK, DATEADD (YEAR, @YR-1900, 0)) - 4 - 
      DATEPART(DW, DATEADD (WEEK, @WK, DATEADD (YEAR, @YR-1900, 0)) - 4) + 1 AS [WEEK_STARTDATE], 

    DATEADD (WEEK, @WK, DATEADD (YEAR, @YR-1900, 0)) - 4 - 
      DATEPART(DW, DATEADD (WEEK, @WK, DATEADD (YEAR, @YR-1900, 0)) - 4) + 7 AS [WEEK_ENDDATEDATE] 

输出

WEEK_STARTDATE   WEEK_ENDDATEDATE 
2017-08-06 00:00:00.000 2017-08-12 00:00:00.000 
+0

这会给你'07-08-2017'和'13-08-2017'。从startDate中删除'+1并将+7更改为+6' –

+0

@mohamedfaiz不,你测试了吗? – Sami

+0

@Sami是的,我已经测试过了。我已经从这个[link](https://social.msdn.microsoft.com/Forums/sqlserver/en-US/cf233caf-4ccd-4bca-add2-b5eb467f2dd4/convert-week-number-to-date论坛= transactsql) –

相关问题