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')