加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

使用时间来计算数据库年龄的sql语句是什么

发布时间:2023-05-13 15:00:45 所属栏目:MsSql教程 来源:
导读:在这篇文章中,我们来学习一下“数据库中通过日期计算年龄的SQL语句是什么”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。
在这篇文章中,我们来学习一下“数据库中通过日期计算年龄的SQL语句是什么”的相关知识,下文有详细的讲解,易于大家学习和理解,有需要的朋友可以借鉴参考,下面就请大家跟着小编的思路一起来学习一下吧。
 
定义函数:
 
CREATE FUNCTION [dbo].[GetAge]  
 
(  
 
@BirthDay nvarchar(20) --生日  
 
)  
 
RETURNS varchar(20)  
 
AS  
 
BEGIN  
 
if(@BirthDay is NUlL or @BirthDay='')
 
return '';
 
 -- Declare the return variable here  
 
 DECLARE @age varchar(20)  
 
 DECLARE @years int  
 
 DECLARE @months int  
 
 DECLARE @days int  
 
 -- Add the T-SQL statements to compute the return value here  
 
 set @age = ''  
 
 set @years = year(GETDATE()) - year(@birthday)  
 
 set @months = month(GETDATE()) - month(@birthday)  
 
 if day(@birthday)<=day(GETDATE())  
 
   set @days = day(GETDATE()) - day(@birthday)  
 
 else  
 
   begin  
 
     set @months = @months - 1  
 
     if MONTH(@birthday) in (1,3,5,7,8,10,12)  
 
       set @days = 31-day(@birthday)+day(GETDATE())  
 
     else if MONTH(@birthday) in (4,6,9,11)  
 
       set @days = 30-day(@birthday)+day(GETDATE())  
 
     else if MONTH(@birthday) = 2  
 
       if (year(@birthday)%4 = 0 and year(@birthday)%100 <> 0) or year(@birthday)%400 = 0  
 
         set @days = 29-day(@birthday)+day(GETDATE())  
 
       else  
 
         set @days = 28-day(@birthday)+day(GETDATE())  
 
   end  
 
 if @months < 0  
 
   begin  
 
     set @years = @years - 1  
 
     set @months = @months + 12  
 
   end  
 
 if @years = 0 and @months = 0  
 
 begin  
 
     return convert(varchar,@days+1) + '天'  
 
  end  
 
 if @years > 0  
 
   set @age = cast(@years as varchar(5)) + '岁'  
 
 if @years < 3 and @months > 0 and @years>-1  
 
 begin  
 
   set @age = @age + cast(@months as varchar(5)) + '月'  
 
 end  
 
 if @years<0  
 
 set @age=''  
 
 RETURN @age  
 
END
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章