[Resolvido] Função para retornar dias da semana em um determinado
Amigos, boa tarde
Preciso de uma função que me retorne todas as primeiras quartas_feiras de um determinado intervalo de datas.
Alguém pode me ajudar?
Para as últimas quartas feiras consegui bolar uma função mas com as primeiras fiquei confuso.
when 23 -- Últimas quartas-feiras de cada mês exceto as de março e setembro
then (datediff(mm, @inicio, @fim) -- Quantidade de meses
- case month(dateadd(dd,(11-datepart(dw,@inicio))%7,@inicio))
when month(@inicio) then 0 else 1 end -- subtrai se inicio após ultima 4ª Feira
+ case month(dateadd(dd,((10-datepart(dw,@fim))%7)+1,@fim))
when month(@fim) then 0 else 1 end -- adiciona se não tem outra 4ª Feira após fim
-- subtrai se inicio após última quarta de Março ou Setembro
- (((Year(@fim) * 2) + case when month(@fim) < 7 then 0 else 1 end)
- ((Year(@inicio) * 2) + case when month(@inicio) < 7 then 0 else 1 end) -- Quantidade de Semestres
- case when (month(dateadd(dd,(11-datepart(dw,@inicio))%7,@inicio)) > month(@inicio)
and month(@inicio) % 6 = 3) or ((month(@inicio) - 1) % 6 > 2)
then 1 else 0 end -- subtrai se inicio após última quarta de Março ou Setembro
+ case when (month(dateadd(dd,((10-datepart(dw,@fim))%7)+1,@fim)) > month(@fim)
and month(@fim) % 6 = 3) or ((month(@fim) - 1) % 6 > 2)
then 1 else 0 end))-- adiciona se fim após ou na última quarta de Março ou Setembro
Discussão (4)
Carregando comentários...