SQL - Server Obter o primeiro dia da semana corrente

como faço para obter o primeiro e último dia da semana corrente.
exemplo. hoje é 18/01/2018
retornaria 15/01/2018 e 21/01/2018

Apenas lembrando que na verdade a semana começa no domingo e termina no sábado, então a data do exemplo está errada seria do dia 14/01/2018 à 20/01/2018. Segue exemplo abaixo:

–1 - Domingo - Sunday
–2 - Segunda - Monday
–3 - Terça - Tuesday
–4 - Quarta - Wednesday
–5 - Quinta - Thursday
–6 - Sexta - Friday
–7 - Sábado - Saturday

declare @DATA datetime = '2018-01-18’
declare @DayOfWeek int = DATEPART(DW, @DATA)
declare @FirstDayOfWeek DateTime = DATEADD(DAY, 7 - @DayOfWeek,@DATA)
declare @LastDayOfWeek DateTime = DATEADD(DAY,1 - @DayOfWeek,@DATA)

select @FirstDayOfWeek, datename(dw, @FirstDayOfWeek)
select @LastDayOfWeek, datename(dw, @LastDayOfWeek)

1 curtida

A resposta acima resolveu para mim também, mas precisou de correção nos dias da semana.:

declare @Data datetime = getdate()--Ou Data em Questão
declare @DiaDaSemana int = DATEPART(DW, @Data)
declare @ComecoDaSemana DateTime = DATEADD(DAY, 1- @DiaDaSemana,@Data)
declare @FimDaSemana DateTime = DATEADD(DAY,7 - @DiaDaSemana,@Data)

select @ComecoDaSemana, datename(dw, @ComecoDaSemana)
select @FimDaSemana , datename(dw, @FimDaSemana)