У меня есть отчет SSRS, который запрашивает AS400. Запрос принимает 2 параметра, start_date
и end_date
. Итак, отчет имеет два текстовых параметра type
.
Я пытаюсь взять сегодняшнюю дату (используя функцию Today()
), сделать DateDiff
из 60 дней и использовать это значение как значение по умолчанию.
Вот осложнения:
- Мои параметры
Start_Date
иEnd_Date
в наборе данных являются переменными типаinteger
, а неDateTime
. - Это означает, что я не могу сделать
DateAdd("d", -60, Today())
. Потому что тогда этот параметр считается параметром даты, а не целочисленным параметром. Передача этого значения в запрос невозможна. - Я не могу изменить тип данных параметров на
Date
. Опять же, запрос ожидает целочисленное значение. Это отправка значения даты (с / и всем остальным). - Я не могу указать параметр в запросе, потому что параметры AS400 - это БОЛЕЗНЬ для передачи. Так что прямо сейчас параметр
?
. В запросе 6 параметров, и они расположены в том же порядке, что и в отчете. Я не знаю, какCAST
илиCONVERT
будут работать на?
. - Поля
Start_Date
иEnd_Date
имеют следующий формат:YYYYMMDD
Вот что я думал сделать:
- Я думал сделать
CAST
для сегодняшнего года, сегодняшнего месяца и сегодняшней даты доSTR
, а затем соединить их все. - А затем
CAST
,STR
доINT
и прибавляя -60.
Но если я это сделаю, у меня останется совершенно случайное число. Это может быть что угодно. Например, сегодняшняя дата минус 60 дней будет 20170650
, что, очевидно, не является допустимой датой.
Как мне это сделать? Могу ли я получить сегодняшнюю дату, добавить -60 дней, а затем преобразовать ее в целое число? Когда я пытаюсь это сделать, при запуске отчета я получаю серое пустое текстовое поле параметра. Я думал, что это сработает, я не знаю, почему это не так.
Мы ценим любые предложения.
TL;DR:
Как сделать DateAdd
из -60 дней до сегодняшней даты, преобразовать его в формат ГГГГММДД и передать в запрос как Integer
?
CAST
/CONVERT
работает нормально - вопросительный знак является маркером параметра, который во время оценки заменяется соответствующими данными. Если вы что-то передаете в запрос (DB2 или любую СУБД), вы должны использовать их, иначе станете жертвой внедрения SQL. - person Clockwork-Muse   schedule 11.07.2017