当前位置:首页 > 数据库 > Sqlserver

MSSQL 计算年龄

alter function [dbo].[getage] ( @birthday datetime )
returns nvarchar(20)
as 
begin

declare @startdatetime datetime
set @startdatetime = @birthday

if ( @birthday is not null
and isdate(@birthday) = 1

begin
declare @age nvarchar(20) ,
@y int ,
@m int ,
@d int ,
@now datetime
set @now = getdate()
set @y = datediff(month, @birthday, getdate()) / 12
--set @m = datediff(month, @birthday, getdate())


-- 计算月
set @startdatetime = dateadd(year,
datediff(d, @startdatetime,
getdate()) / 365,
@startdatetime) 

if day(@startdatetime) <= day(getdate()) 
set @m = datediff(m, @startdatetime, getdate()) 
else 
set @m = datediff(m, @startdatetime,
dateadd(m, -1, getdate())) 

 


--计算天
set @startdatetime = @birthday
set @startdatetime = dateadd(year,
datediff(d, @startdatetime,
getdate()) / 365,
@startdatetime) 


if day(@startdatetime) <= day(getdate()) 
set @startdatetime = dateadd(m,
datediff(m, @startdatetime,
getdate()),
@startdatetime) 


else 
set @startdatetime = dateadd(m,
datediff(m, @startdatetime,
dateadd(m, -1,
getdate())),
@startdatetime) 



set @d = datediff(day, @startdatetime, getdate())

 

set @age = cast(@y as varchar(5)) + '年'
+ cast(@m as varchar(5)) + '月' + cast(@d as varchar(5))
+ '天'


end
else 
begin
set @age = null
end
return @age
end

 

--datediff(month,'2010-05-06',getdate())%12*0.01 as 'injobtime'


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐