У меня есть таблица, в которой есть столбцы reportyear и reportmonth. Для отчетного года столбец представляет собой vharchar (4), который соответствует формату 2016 года. Для reportmonth это varchar (2), который имеет формат 01, 02, 03 и т. Д. У меня есть параметр данных, который объединяет два, так как нашим конечным пользователям требуется выпадающая дата. Поэтому мой параметр @ReportDate varchar (7).Вычесть месяц из формата года и даты varchar '2016-11'
Моя проблема заключается в одном из моих вариантов в моей хранимой процедуре, мне нужно поставить предложение where, где оно возвращается месяц. Поэтому, если мой параметр равен «2016-11», мне нужно предложение where, где оно возвращает «2016-10». Я успешно сделал это, используя плавную запрос:
SUBSTRING(@Reportdate, 1, 4) + '-' + cast(substring(@ReportDate, 6, 7) -1 as varchar(20))
Это возвращает «2016-10», если я выбираю «2016-11» в качестве какого-либо параметра даты отчета. Но, если подумать, это не сработает, если моя дата отчета будет в январе, потому что вышеупомянутый запрос буквально вычитает строковое значение. Поэтому, если я выберу «2016-01», вышеуказанный запрос вернет «2016-0».
Конечные пользователи хотят, чтобы в SSRS были дефисы с дефисами, поэтому я объявил его как varchar (7), чтобы включить dash @John Cappelletti – Lisbon
@Lisbon Обновлен, чтобы включить тире, когда я увидел комментарий. Varchar (7) vs varchar (10) не является проблемой –