我在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/

10-11 01:56