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