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