sql根据出生日期计算年龄(精确到年月日)


1、建立函数

Create Function [dbo].[GetAge]
(
@BirthDay datetime
)
Returns varchar(20)
As
Begin

DECLARE @year int=0;
DECLARE @month int=0;
DECLARE @day int=0;
DECLARE @nowdate_month int=month(GETDATE());
DECLARE @nowdate_day int=day(GETDATE());
DECLARE @birthday_month int=month(@BirthDay);
DECLARE @birthday_day int=day(@BirthDay);
DECLARE @Returns VARCHAR(20)='';

if(@BirthDay>GETDATE())
begin
set @Returns= '???';
return @Returns
end
--年
set @year=year(GETDATE())-year(@BirthDay);
if(@birthday_month > @nowdate_month or (@nowdate_month = @birthday_month and @birthday_day > @nowdate_day))
begin
set @year = @year-1;
end
set @BirthDay=dateadd(YEAR,@year,@BirthDay);
set @month=DATEDIFF(month,@BirthDay, GETDATE());
--月
if(@birthday_day > @nowdate_day)
begin
set @month=@month-1;
end
if(@birthday_month = @nowdate_month and @birthday_day <= @nowdate_day)
begin
set @month=0;
end
set @BirthDay=dateadd(MONTH,@month,@BirthDay);
--日
set @day=DATEDIFF(day,@BirthDay, GETDATE())
if(@year>0)
begin
set @Returns= CONVERT(varchar(20),@year)+'岁'
end
if(@month>0)
begin
set @Returns=@Returns+ CONVERT(varchar(20),@month)+'月'
end
if(@day>0)
begin
set @Returns =@Returns+ CONVERT(varchar(20),@day)+'天'
end
return LTRIM(@Returns)
end

2、调用函数 select dbo.GetAge('1995/8/1 0:00:00')


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM