#sql-server #reporting-services
#sql-server #службы отчетности
Вопрос:
Я создаю отчет в SSRS, в котором я получил поле даты начала, которое должно автоматически заполнять дату начала текущего квартала. Кто-нибудь, пожалуйста, может мне помочь, как мне это сделать?. Огромное спасибо
Ответ №1:
T-SQL для текущего квартала:
SELECT DATEADD(qq,DATEDIFF(qq,0,GETDATE()),0) AS FirstDayOfCurrentQtr
Или выражение SSRS, если вы хотите установить значение таким образом:
=DateAdd(DateInterval.Quarter, DateDiff(DateInterval.Quarter, CDate("1/1/1900"), Today()), CDate("1/1/1900"))
Ответ №2:
если вы хотите избежать использования дополнительного набора данных, вы могли бы использовать это выражение в качестве значения по умолчанию для параметра:
=DateSerial(Datetime.Today.Year,3 * ((datetime.Today.Month -1 )/3 1) -2, 1)
Хотя это довольно некрасиво. В идеале создайте функцию, которую вы можете вызывать из выражения:
Function getQuarter (byVal d As DateTime) As DateTime
Dim quarter as Integer = (d.Month -1) / 3 1
Dim quarterStart AS new DateTime(d.Year, 3 * quarter - 2, 1)
getQuarter = quarterStart
End Function
Поместите вышеуказанное в раздел code свойств отчета и в выражении вызовите его с помощью:
=Code.GetQuarter(Today)