最近做專案時遇到乙個問題.
跟據人員的生日與當前日期進行比較求出該人員實際年齡.這個看上去比較簡單的問題,其實不細心去看也會有很多問題.
先看第一種:
一張人員資訊表裡有一人生日(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...