我在SSRS中做报告,我需要数据集列来计算t-SQL中两个日期之间的of年数。我发现单个输入参数的功能无论是否为leap年,但对于我的要求,函数中有两个参数或任何t-SQL语句。
谢谢..等待任何人的回复
最佳答案
我以为,会补充另一个答案。
DECLARE @A DATE = '2008-03-23',
@B DATE = '2012-04-20'
DECLARE @AM INT,@AY INT,@BM INT,@BY INT
SET @AM = DATEPART(MONTH,@A), --3
@AY = DATEPART(YEAR,@A), --2008
@BM = DATEPART(MONTH,@B), --4
@BY = DATEPART(YEAR,@B) --2012
DECLARE @COUNT INT = 0
WHILE (@AY <= @BY)
BEGIN
SET @COUNT = @COUNT +
(CASE WHEN (@AY%4 = 0 AND @AY%100 !=0) OR @AY%400 = 0
THEN 1
ELSE 0 END)
SET @AY = @AY + 1
END
SET @COUNT = @COUNT + CASE WHEN @AM >= 3 THEN -1 ELSE 0 END
SELECT @A BEGIN_DATE,@Y END_DATE,@COUNT NO_OF_LEAP_YEARS
由于我现在没有可用的sql server实例,因此我没有测试代码。.但是您会了解我要实现的目标。
我声明了@BM,以防您也想在月底进行检查。
关于sql - 如何在t-sql中计算两个日期之间的of年数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23824188/