2014-07-22 67 views
0

我的表中有一個birthdate列,它是一個DATE字段類型。mysql DATE fieldtype返回值爲年份

我想運行一個查詢並在幾年前返回該列的結果。

所以2010-07-01會回到4(4年)

又如:2002年1月20日將返回12(12年)。

是否有一個mysql函數來做到這一點?

+3

回答幾天就回來上DOB計算希望這有助於http://stackoverflow.com/questions/24099562/calculate-age-with-decimals-from-date-of-birth/24099709#24099709 –

+3

嘗試'選擇timestampdiff(YEAR,'2010-07-01',現在());' – Braj

回答

0

這應該這樣做。

CONCAT(FORMAT(DATEDIFF(NOW(), your_date_field)/365.25,2), ' years old') 
+1

除了全年以外,通常不給年齡。好吧,非常未成年人說,他們是三歲和四分之一歲:-) – VMai

+0

試試這個,如果你想他們永遠不會0 ... if(FORMAT(DATEDIFF(NOW(),your_date_field)/ 365.25,2)<1 ,'近1歲',CONCAT(FLOOR(FORMAT(DATEDIFF(NOW(),your_date_field)/ 365.25,2))),'years old') –

+0

舊時代(MySQL 4.x或更早版本)繁瑣的程序,以獲得每個有效日期組合的全年差異。但是由於[TIMESTAMPDIFF](http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html#function_timestampdiff)存在​​,這很容易,請參閱@DanFromGermany的答案。 – VMai