В настоящее время я использую «1/1/1800» в качестве магической даты, чтобы мой отчет генерировал вчерашние данные, когда магическая дата вводится в параметры диапазона дат. Проблема в том, что теперь мне нужно удалить это магическое число и изменить SQL таким образом, чтобы в отчете по-прежнему оставалась возможность просматривать только вчерашние данные или вводить диапазоны дат. Возможность просмотра вчерашних данных только для целей планирования. Таким образом, пользователи не будут знать об этом, поэтому не должны замечать никакой разницы в отчете и в том, как он запрашивает входные данные.
Если бы я заменил «1/1/1800» на «Вчера», как я могу изменить свой SQL?
Любые предложения, пожалуйста?
declare
@beginDate datetime,
@endDate datetime
if ( convert(date, {?BeginDate}) = convert(date, '1/1/1800') and
convert(date, {?EndDate}) = convert(date, '1/1/1800'))
Begin
set @beginDate = dateadd(day, datediff(day, 1, getdate()), 0);
set @endDate = dateadd(day, datediff(day, 1, getdate()), 0);
End
Else
Begin
set @beginDate = {?BeginDate};
set @endDate = {?EndDate};
End
select Staffing_Calendar_Da, payhours, Staffing_Start_Dt, unit_name_ch,
t.Pos_Desc_Ch, Wstat_Abrv_Ch, Payhours_day, Payhours_night,
total_payhours,p.category2,
case when Payhours_day>0 then 'Day' end as 'Day',
Case when Payhours_night>0 then 'Night' end as 'Night',
case when total_payhours>0 then 'All' end as 'day_night'
from vw_position_OTP t
inner join vw_mcfrs_Position_Hours p on t.Pos_Desc_Ch=p.Pos_Desc_Ch
where t.Staffing_Calendar_Da between @beginDate and @endDate
and Category2 not like '%chief';