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'

转载于:https://www.cnblogs.com/sea88/p/4653748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值