/*
如果开始日期大于结束日期,返回null
如果天不够向上一月借
如果月不够向上一年借
*/
CREATE FUNCTION Jiange(@S DATE,@E DATE)
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @rst VARCHAR(50)=''
DECLARE @Y1 INT,@Y2 INT,@M1 INT,@M2 INT,@D1 INT,@D2 INT,@Y INT,@M INT,@D INT
SELECT @Y1=YEAR(@S),@Y2=YEAR(@E),@M1=MONTH(@S),@M2=MONTH(@E),@D1=DAY(@S),@D2=DAY(@E)
IF @S>@E
RETURN NULL
IF @D2>=@D1
SET @D=@D2-@D1
ELSE
BEGIN
SET @E=DATEADD(MONTH,-1,@E)
SELECT @Y1=YEAR(@S),@Y2=YEAR(@E),@M1=MONTH(@S),@M2=MONTH(@E)
SET @D=DAY(EOMONTH(@E))+@D2-@D1
END
IF @M2>=@M1
SET @M=@M2-@M1
ELSE
BEGIN
SET @E=DATEADD(YEAR,-1,@E)
SELECT @Y1=YEAR(@S),@Y2=YEAR(@E)
SET @M=12+@M2-@M1
END
SET @Y=@Y2-@Y1
IF @Y>0
SET @rst=@rst+CONVERT(VARCHAR(10),@Y)+'年'
IF @M>0
SET @rst=@rst+CONVERT(VARCHAR(10),@M)+'月'
ELSE IF (@Y>0 AND @M=0 AND @D>0)
SET @rst=@rst+'零'
IF @D>0
SET @rst=@rst+CONVERT(VARCHAR(10),@D)+'天'
RETURN @rst
END
计算两个日期间隔(SQL)
最新推荐文章于 2024-01-31 16:47:53 发布