如何计算年,月,日两个日期之间的约会时间天?

时间:2012-06-26 13:45:28

标签: sql sql-server tsql sql-server-2005

  

可能重复:
  How to calculate age in T-SQL with years, months, and days

我有一个应用程序可以完全计算特定日期的年龄,即几年 - 几天。在sql server 2005中有没有简单的方法来计算它。实际上我已经为此创建了一个功能,但这非常复杂。我只是想知道sql server中有什么简单的方法或任何我不知道的功能吗?

要求计算任何申请人在特定日期的确切年龄非常简单。

1 个答案:

答案 0 :(得分: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)'