[SQL ] MySQL計算歲數
MySQL 5.1 + PHP 5.2.9-2
計算法1:
SQL : YEAR(NOW()-birth)
PHP : if($pOld>1999) $pOld=$pOld-2000;
if($pOld>999) $pOld=$pOld-1900;
先用MySQL算出年差
再從MySQL的YEAR函數原本 00-69 => 2000-2069
70-99 => 1970-1999
回算回二位數數字
看起來語法很簡單, 可是實際上可能出問題
一方面這個語法只能用到2069
另一方面是當這個值丟給YEAR時是從1970年起算, 會有閏年的差
計算法2:
(YEAR(CURDATE())-YEAR(birth)) - (RIGHT(CURDATE(),5)<RIGHT(birth,5))
這是我目前網路上查到最精簡的計算方法,精度已經到日了
計算法3:
(YEAR(CURDATE())-YEAR(birth)) - (SUBSTRING(NOW(),6)<SUBSTRING(birth,6))
自己改的, 精度可以到秒
計算法4:
FLOOR((NOW()-birth)/10000000000)
利用MySQL時間計算的特性
可是這樣有考慮到大小月閏年嗎?
==================================
想問的是.....難道這麼基本的問題....還得自己寫程式碼來算嗎....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.180.163
※ 編輯: SmallBeeWayn 來自: 122.116.180.163 (05/06 10:52)
推
05/08 22:31, , 1F
05/08 22:31, 1F