Como excluir fins de semana e feriados na consulta do servidor sql
Estou criando uma consulta que ajustará a data, excluindo feriados e fins de semana.
Dados de exemplo:
Adjusted Date | Adjusted Date(Excluding Holidays and weekends)
02/06/16 | 02/09/16
No meu exemplo, A data é um fim de semana e a data ajustada se torna 9 de fevereiro, pois 8 de fevereiro é feriado, portanto, é necessário ajustar para que a data ajustada seja um dia útil. Atualmente, tenho uma tabela separada de todos os finais de semana e feriados de um ano fiscal.
select case when (
select count(dbo.WeekendsHoliday.[Weekends & Holidays])
from dbo.WeekendsHoliday
where dbo.WeekendsHoliday.[Weekends & Holidays]
= case when convert(time, [Time Received]) > convert(time, '5:00:00 PM')
then dateadd(day, 1, [Date Received])
else [Date Received]
end
) > 0
then case (datename(DW,
case when convert(time, [Time Received]) > convert(time, '5:00:00 PM')
then dateadd(day, 1, [Date Received])
else [Date Received]
end))
when 'Saturday'
then dateadd(day, 2,
case when convert(time, [Time Received]) > convert(time, '5:00:00 PM')
then dateadd(day, 1, [Date Received])
else [Date Received]
end)
else dateadd(day, 1,
case when convert(time, [Time Received]) > convert(time, '5:00:00 PM')
then dateadd(day, 1, [Date Received])
else [Date Received]
end)
end
end as [Adjusted Date Excluding holidays and weekends]
O que acontece aqui é que, se o feriado for de 2 dias consecutivos (quinta e sexta-feira), a data ajustada seria sábado, o que ainda não é válido porque é um fim de semana.
A data ajustada é um alias aqui
Eu realmente preciso da sua ajuda. obrigado