2012-06-26 168 views
1

可能重复:
How to calculate age in T-SQL with years, months, and days如何在年,月,日两个日期之间计算datediff?

我有一个计算年龄在特定日期完全是在年,月,日的应用程序。有什么简单的方法来计算在SQL Server 2005中。其实我已经为此创建了一个函数,但这非常复杂。我只想知道是否有任何简单的方法或SQL Server中的任何功能,我不知道?

要求是很简单的计算具体日期的确切年龄为任何申请人。

+3

[?你尝试过什么(http://whathaveyoutried.com) –

+1

看起来像有人有类似的问题,可能是有关您找到的解决方案检查了这一点http://stackoverflow.com/questions/9734089/calculating-and-showing-age-column-on-sql-server-as-xx-years-xx-months –

+1

[T -SQL with years,months,and days](http://stackoverflow.com/a/57720/1042848) –

回答

2

不知道,如果是100%正确的,但这样的事情:

declare @d1 datetime, @d2 datetime, @y int, @m int, @d int 
set @d1 = '2009-09-23' 
set @d2 = '2012-04-23' 

set @y = datediff(year, @d1, @d2) - 1 
set @m = datediff(month, dateadd(year, @y, @d1), @d2) 
if dateadd(month, @m, dateadd(year, @y, @d1)) > @d2 set @m = @m - 1 

set @d = datediff(day, dateadd(month, @m, dateadd(year, @y, @d1)), @d2) 
print cast(@y as nvarchar) + ' year(s) ' + cast(@m as nvarchar) + ' month(s) and ' + cast(@d as nvarchar) + ' day(s)' 
+1

一个小问题,但是在使用日期时,建议使用非文化特定日期格式(yyyyMMdd)**或**在查询开始时明确设置日期格式,例如, 'SET DATEFORMAT YMD'。在回答这个问题时尤其如此,因为它将确保您的示例无论运行它的服务器设置如何都能运行。 – GarethD

+0

谢谢,绝对正确。但是AFAIK,我使用了ISO格式:http://en.wikipedia.org/wiki/ISO_8601 –

相关问题