Получить первый день недели T- SQL - PullRequest
0 голосов
/ 20 февраля 2020

Как получить первый день недели (понедельник), где неделя = 6 и год = 2020, мне нужно получить 10.02.2020

например. 1-я неделя 2020 года - дата с 06.01.2020 по 12.01.2020 6-я неделя 2020 года - дата с 10.02.2020 по 16.02.2020

Ответы [ 3 ]

1 голос
/ 20 февраля 2020

Следующий код получит дату понедельника недели указанной даты независимо от значения DateFirst или Language:

Cast( DateAdd( day, - ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7, Datum ) as Date )

Пример с данными примера:

with SampleData as (
  select GetDate() - 30 as Datum
  union all
  select DateAdd( day, 1, Datum )
    from SampleData
    where Datum < GetDate() )
select Datum,
  -- 1 = Monday through 7 = Sunday.
  ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7 + 1 as WeekDay,
  -- Date of Monday in the week of the supplied date.
  Cast( DateAdd( day, - ( @@DateFirst + DatePart( weekday, Datum ) - 2 ) % 7, Datum ) as Date ) as Monday
  from SampleData;
1 голос
/ 20 февраля 2020
DECLARE @YEAR int = 2020;
DECLARE @WEEKSTOADD int = 6;
SET DATEFIRST 1;

SELECT 
        DATEADD(day, 
                1 -  DATEPART(dw,DATEADD(week,@WEEKSTOADD,cast(cast(@YEAR as varchar(4)) + '0101' as date))), 
                DATEADD(week,@WEEKSTOADD,cast(cast(@YEAR as varchar(4)) + '0101' as date)))
0 голосов
/ 20 февраля 2020

По данным выборки вам нужно substring():

select t.*, substring(datnum, charindex(' ', datnum) + 1, 10) as dt
from table t
where t.week = 6;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...