SQL 跟據出生日期求年齡

2022-08-26 10:45:09 字數 824 閱讀 1306

最近做專案時遇到乙個問題.

跟據人員的生日與當前日期進行比較求出該人員實際年齡.這個看上去比較簡單的問題,其實不細心去看也會有很多問題.

先看第一種:

一張人員資訊表裡有一人生日(birthday)列,跟據這個列,算出該人員的年齡

datediff(year,birthday,getdate())  

例:birthday = '2003-3-8'

getdate()= '2008-7-7'

結果為:5

這樣結果是會返回該人員的大概年齡,但不精確.不會精確到月或日.

按照上面測試的日期,該人員的實際年齡應該還不滿5歲。在需要精確年齡的時候,就會有錯.

這個問題我也在網上找了很久,但一直沒有找到能精確算出年齡的。

最後看見一位任兄發了這樣一條語句

@age = floor(datediff(dy,birthday,getdate())/365.25)

順隨解釋一下floor函式

floor(expr) 返回小於等於expr的最大整數.floor(1,1)返回報,floor(-1,1)返回-2,floor(1)返回1

這樣就可以算出,該人員當前實際年齡了.

測試:birthday = '2000-7-8'

getdate()= '2007-7-7'

算出結果為:6

因為此人生日還未到7號。所以只有六歲.

select @bd =(cast(convert(char( 8 ),@today,112) as int) - cast(convert(char( 8 ),@birthday,112) as int))/10000  另和程演算法 

通過出生日期計算年齡

關於通過出生日期計算年齡的問題,通過baidu搜尋得到很多 貼了以下函式 function calcage datempdateofbirth as variant as integer calcage int datediff y datempdateofbirth,date 365.25 end...

SQL Server 根據出生日期計算年齡

getdate 函式用於返回當前的日期和時間 datediff 函式返回兩個日期之間的時間。語法 datediff datepart,startdate,enddate startdate 和 enddate 引數是合法的日期表示式。datepart 引數可以是下列的值 datepart縮寫年 yy...

mysql根據出生日期計算年齡

select date format from days to days now to days birthday y 0 as age方法一,作者也說出了缺陷,就是當日期為未來日期時結果為0,而不是負數 這裡使用了5個函式和兩個運算子。select date format now y date f...