Язык выражений SSRS BIDS Часть месяца с текущей даты

В BIDS мне нужно expression, чтобы взять YEAR часть даты, которая составляет минус 1 месяц от текущей даты.

Например, сегодняшняя дата 20/04/2012, которое вернет желаемое выражение:

2012

Если бы сегодняшняя дата была 05/01/2012, возвращалось бы требуемое выражение:

2011


person JsonStatham    schedule 20.04.2012    source источник


Ответы (3)


поэтому правило такое:

  • Если это январь -> вернуться в прошлом году
  • иначе -> вернуться в этом году

Правильно?

=IIf(Datepart("m", Fields!date.Value)=1,Datepart("YYYY", Fields!date.Value)-1,Datepart("YYYY", Fields!date.Value))
person Diego    schedule 20.04.2012

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION YearRollOver 
(

    @dDateIn DATETIME
)
RETURNS DATETIME

AS

BEGIN

    declare @dDATEOut  DATETIME


    SELECT @dDATEOut = CAST(CAST(YEAR(@dDateIn)+1 AS varchar)+'/'+CAST(MONTH(@dDateIn) as varchar)+'/'+cast(DAY(@dDateIn) as varchar)  AS DATETIME)

    RETURN @dDATEOut

END
GO

Попробуйте эту функцию. Просто передайте ему дату для увеличения, и он увеличит ваш ГОД на 1.

Не забудьте закрыть тему, если вы довольны.

Ваше здоровье

Мак

person Andrew McLintock    schedule 20.04.2012
comment
ему нужна функция в SSRS, а не в SQl Server. - person Diego; 20.04.2012
comment
У вашей функции есть несколько проблем: во-первых, она не дает OP того, что он хочет: текущий год, если не январь, иначе последний. Ваши всегда дают в следующем году. И синтаксический анализ даты и времени в строки для манипулирования датами в SQL не так хорош: для функции, которую вы показываете, почему бы вам просто DATEADD(year, 1, @dDateIn) не получить те же результаты? - person Jamie F; 20.04.2012

Если это что-то, что вы собираетесь делать много, я бы создал для этого функцию, которая будет извлекать год, месяц и день - каждый в свою собственную переменную. Увеличьте год, перестройте дату как строку и приведите строку как DATE. Если вам нужна помощь, дайте мне знать.

Мак

person Andrew McLintock    schedule 20.04.2012