类别:数据库

日期:2020-02-24 浏览:2755 评论:0

SqlServer函数:

CREATE FUNCTION [fun_lx_age](@birthday VARCHAR(10),
                    @nowday VARCHAR(10))
RETURNS VARCHAR(20)
AS
BEGIN

  DECLARE @year INT,
      @month INT,
      @day INT
      
  DECLARE @RETURN VARCHAR(20)  
  set @birthday=convert(varchar(10),convert(datetime,@birthday),21)

  SET @day=DATEDIFF(DAY,CONVERT(DATETIME,@birthday),@nowday)-1 
  IF @day<0
  BEGIN
    SET @RETURN=''
  END
  ELSE
  BEGIN

    SET @year=FLOOR((@day-(CONVERT(NUMERIC(14,3),CONVERT(VARCHAR(4),@nowday,21))-convert(NUMERIC(14,3),CONVERT(VARCHAR(4),@birthday)))/4)/365)

    SET @month=FLOOR((@day-@year*365)/30)

    SET @day=@day-@year*365-@month*30

    IF @year<=0
    BEGIN
      IF @month<=0
      BEGIN
        SET @RETURN=CONVERT(VARCHAR(2),@day)+'天'
      END
      ELSE
      BEGIN
        SET @RETURN=CONVERT(VARCHAR(2),@month)+'月'+ CONVERT(VARCHAR(2),@day)+'天'
      end
    END
    ELSE
    BEGIN
      IF @year<=5
      BEGIN
        IF @month<=0
        BEGIN
          SET @RETURN=CONVERT(VARCHAR(2),@year)+'岁'+CONVERT(VARCHAR(2),@day)+'天'
        END
        ELSE
        BEGIN
          SET @RETURN=CONVERT(VARCHAR(2),@year)+'岁'+CONVERT(VARCHAR(2),@month)+'月'
        END
      END
      ELSE
      BEGIN
        SET @RETURN=CONVERT(VARCHAR(2),@year)+'岁'
      END
    END
  END
  RETURN @RETURN
END

调用:

select dbo.fun_lx_age('2001-12-15','2020-01-16') bays


本文标题:SqlServer 计算年龄(岁月天)的函数
本文链接:https://vtzw.com/post/20.html
作者授权:除特别说明外,本文由 零一 原创编译并授权 零一的世界 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
 您阅读本篇文章共花了: 

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。