【发布时间】:2012-04-20 09:38:47
【问题描述】:
在BIDS 中,我需要一个expression 来获取当前日期负1 个月的日期的YEAR 部分。
例如今天的日期是20/04/2012 所需的表达式将返回:
2012
如果今天的日期是 05/01/2012,则 desure 表达式将返回:
2011
【问题讨论】:
标签: sql-server reporting-services ssrs-2008 bids ssrs-expression
在BIDS 中,我需要一个expression 来获取当前日期负1 个月的日期的YEAR 部分。
例如今天的日期是20/04/2012 所需的表达式将返回:
2012
如果今天的日期是 05/01/2012,则 desure 表达式将返回:
2011
【问题讨论】:
标签: sql-server reporting-services ssrs-2008 bids ssrs-expression
所以规则是:
对吗?
=IIf(Datepart("m", Fields!date.Value)=1,Datepart("YYYY", Fields!date.Value)-1,Datepart("YYYY", Fields!date.Value))
【讨论】:
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
试试这个功能。只需将要增加的日期传递给它,它就会将您的 YEAR 增加 1。
如果你不开心,记得关闭线程。
干杯
苹果机
【讨论】:
DATEADD(year, 1, @dDateIn) 获得相同的结果?
如果您要做很多事情,我会创建一个函数来执行此操作,该函数将提取年、月和日 - 每一个都有自己的 var。增加年份,将日期重建为字符串并将字符串转换为 DATE。如果您需要帮助,请告诉我。
苹果机
【讨论】: