2012-06-26 215 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 –

相關問題