Как получить отчет между определенным диапазоном дат в Cognos

Недавно я начал работать над Cognos Report Studio. имел код T-sql с 4 табличными объединениями. Я просто вставил код в Cognos Report Studio, перетащив панель инструментов SQL в Query Explorer. Отчет успешно выполнен. Но теперь я хочу, чтобы этот отчет генерировался 1-го числа каждого месяца со сроком погашения от 1 до 30-го /31-го числа этого месяца. Например: если я получу отчет 1 мая, он должен предоставить данные о данных, в которых диапазон дат погашения может быть между 1-м и 31-м мая. Я попытался добавить код ниже к моему уже написанному SQL-коду:

WHERE 
CURR_MATURITY_DATE BETWEEN (DATEADD(MM, 0, GETDATE()), 0) AND (DATEADD(MM, 0, GETDATE()) +1, 0) -1)

Этот код не работает. Pl Примечание. Формат столбца CURR_MATURITY_DATE: мм/дд/гггг. Пожалуйста, сообщите, какие изменения необходимы для успешного запуска кода.

2 ответа

Cognos имеет функцию добавления месяцев. (По крайней мере, Cognos 10 делает.) В редакторе выражений на вкладке функций он находится в разделе "Бизнес-дата/время". Он назывался _add_months. Таким образом, ваша функция в конечном итоге будет чем-то вроде between (_add_months(1,current_date))

Вы также можете использовать функцию SQL Server. Вы должны поместить эти текстовые параметры (например, MM) в фигурные скобки. Таким образом, вы закончите с dateadd({MM},0,current_date).

В первый день текущего месяца в TSQL вы должны использовать: DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) В Cognos синтаксис будет DATEADD({MONTH}, DATEDIFF({MONTH}, 0, GETDATE()), 0)


Попробуйте это в своем предложении WHERE:

Для первого дня месяца: select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

Для последнего дня месяца: select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0))

Найдите его здесь, он объясняет все.

licensed under cc by-sa 3.0 with attribution.