码迷,mamicode.com
首页 > 数据库 > 详细

MSSQL 计算年龄

时间:2015-07-17 11:25:27      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:


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‘

MSSQL 计算年龄

标签:

原文地址:http://www.cnblogs.com/sea88/p/4653748.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!