как использовать getdate () в SSRS, исключая выходные и праздничные дни - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь запустить отчет за следующий день, используя getdate()+1, но хочу исключить выходные и праздничные дни. Чтобы исключить выходные, я включил в свое утверждение where следующее, но оно не работает. В идеале это должно показать результаты понедельника, если я бегу в пятницу. Но вместо этого я не получаю результатов.

Ниже мой запрос:

select * from table 
where CONVERT(DATE, [Appointment_DateTime]) = CONVERT(DATE, getdate()+1)
and DATEPART(w,CONVERT(DATE, [Appointment_DateTime])) NOT IN (1,7) 

Я использую not in (1,7), так как воскресенье - первый день на сервере, поэтому я исключаю воскресенье и субботу.

1 Ответ

0 голосов
/ 29 июня 2018

Если вы хотите показать данные понедельника в пятницу, вы должны добавить три дня, если сегодня пятница:

select * 
from table 
where CONVERT(DATE, [Appointment_DateTime]) = CONVERT(DATE, getdate() + IIF(DATEPART(w,CONVERT(DATE, [Appointment_DateTime])) = 6, 3, 1))
    and DATEPART(w,CONVERT(DATE, [Appointment_DateTime])) NOT IN (1,7) 

другой подход заключается в использовании различных условий для Пн-Чт и Пт:

select * 
from table 
where CONVERT(DATE, [Appointment_DateTime]) = CONVERT(DATE, GETDATE() + 1)
    and DATEPART(weekday,CONVERT(DATE, [Appointment_DateTime])) in (2,3,4,5)
union all
select * 
from table 
where CONVERT(DATE, [Appointment_DateTime]) = CONVERT(DATE, GETDATE() + 3)
    and DATEPART(weekday,CONVERT(DATE, [Appointment_DateTime])) = 6

первая часть объединения даст строки для понедельника по четверг, вторая для пятницы

...