Usuário com melhor resposta
Pegar data de início e de fim de uma semana do mês

Pergunta
-
Boa tarde, pessoal.
Hoje estou com um problema em pegar a data inicial e final de uma semana do mês. Vamos por partes:
Eu tenho uma combo que me traz as semanas de um mês postado. Pra saber quantas semanas eu tenho em Janeiro de 2015, por exemplo, eu uso o seguinte SQL:
SELECT theLast - theFirst + 1 AS Semanas FROM ( SELECT 1 + Number AS theMonth, DATEDIFF(DAY, -1, DATEADD(MONTH, Number, DATEADD(YEAR, 2015 - 1900, 0))) / 7 AS theFirst, DATEDIFF(DAY, -1, DATEADD(MONTH, Number, DATEADD(YEAR, 2015 - 1900, 30))) / 7 AS theLast FROM master..spt_values WHERE Type = 'P' AND Number < 12 ) AS d WHERE d.theMonth = 01
Até este ponto ok, bem tranquilo. Retornou 5 semanas. O problema está em encontrar o início e o fim de uma semana. Por exemplo, se eu postar semana = 03 e mês = 01, deverá me mostrar '2015-01-11' como inicial e '2015-01-17' como final.
Alguém tem ideia de como fazer isso?
- Editado Isabela Ribeiro segunda-feira, 20 de julho de 2015 18:30 ajuste no título
Respostas
-
Deleted
- Marcado como Resposta Isabela Ribeiro segunda-feira, 20 de julho de 2015 19:16
Todas as Respostas
-
Deleted
- Marcado como Resposta Isabela Ribeiro segunda-feira, 20 de julho de 2015 19:16
-
Com a tua resposta cheguei na solução, só precisei ajustar o teu código pra usar um Id para localizar a semana correta!
Obrigada José!
-- código 1 declare @MêsAno varchar(7), @Dia1 DATE, @Id INT = 1; set @MêsAno = '1/2015'; --< mês/ano, sem espaços -- set @Dia1= Convert(date, '1/' + @MêsAno, 103); set DateFirst 7; declare @InicioSemana date, @FinalSemana date; set @InicioSemana= DateAdd(day, 1 - DatePart(weekday, @Dia1), @Dia1); set @FinalSemana= DateAdd(day, +6, @InicioSemana); while Month(@InicioSemana) = Month(@Dia1) or Month(@FinalSemana) = Month(@Dia1) begin SELECT @Id, @InicioSemana, @FinalSemana; set @InicioSemana= DateAdd(day, +7, @InicioSemana); set @FinalSemana= DateAdd(day, +6, @InicioSemana); set @Id = @Id+1; END;
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 21 de julho de 2015 15:56