[SQL ] MySQL計算歲數

看板Database作者 (喵喵叫的蜜蜂貓)時間16年前 (2009/05/06 10:44), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
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
文章代碼(AID): #1A0FcIu3 (Database)