在Mysql中計(jì)算年齡:

創(chuàng)新互聯(lián)主營(yíng)永修網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app軟件開(kāi)發(fā),永修h5微信平臺(tái)小程序開(kāi)發(fā)搭建,永修網(wǎng)站營(yíng)銷(xiāo)推廣歡迎永修等地區(qū)企業(yè)咨詢(xún)
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age FROM 表名;
SQL計(jì)算年齡:
SELECT FLOOR(DATEDIFF(CURDATE(), STR_TO_DATE(birthday, '%Y-%m-%d'))/365) AS age FROM table_name;
拓展:MySQL中可以使用TIMESTAMPDIFF函數(shù)根據(jù)出生日期計(jì)算年齡,它接受5個(gè)參數(shù):
TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2, [datetime_expr3], [datetime_expr4])
unit參數(shù)可以是YEAR,QUARTER,MONTH,WEEK,DAY,HOUR,MINUTE,SECOND中的任何一個(gè),代表了計(jì)算結(jié)果的單位。
以前使用mysql不是很多,對(duì)mysql的函數(shù)也不是很熟悉,遇到這個(gè)問(wèn)題第一時(shí)間百度搜索,搜索到這兩種方法,這兩種方法是排在百度第一條的博客。
方法一,作者也說(shuō)出了缺陷,就是當(dāng)日期為未來(lái)日期時(shí)結(jié)果為0,而不是負(fù)數(shù);這里使用了5個(gè)函數(shù)和兩個(gè)運(yùn)算符。
方法二,解決了方法一為負(fù)數(shù)的問(wèn)題,但看起來(lái)更復(fù)雜;這里使用了6個(gè)函數(shù)和3個(gè)運(yùn)算符。
看了這篇貼子后,我就暈了,怎么會(huì)這么復(fù)雜,以前用Sql Server很簡(jiǎn)單就可以了。我堅(jiān)信一定有簡(jiǎn)單高效的方法。很快就找到了根據(jù)以上方法改良后的方法。
改良后的方法一,少了一個(gè)函數(shù)和一個(gè)運(yùn)算符,當(dāng)日期為未來(lái)日期時(shí)計(jì)算結(jié)果還是為0;
改良后的方法二,還是6個(gè)函數(shù)和3個(gè)運(yùn)算符,看起來(lái)簡(jiǎn)單些;取日期的右邊五位,當(dāng)日期格式為‘2013-01-01’時(shí)取到的是‘01-01’,沒(méi)有問(wèn)題;當(dāng)日期格式為‘2013-1-1’縮寫(xiě)格式時(shí),取右邊的五位取出的是‘3-1-1’,會(huì)導(dǎo)致出錯(cuò)。
然后自己根據(jù)MYSQL的幫助文檔中的日期函數(shù)想到了第三種方法:
取生日和當(dāng)前日期之前的天數(shù)除以一年的實(shí)際天數(shù)(365天5小時(shí)48分46秒),然后取整。這樣只用了三個(gè)函數(shù)和一個(gè)運(yùn)算符就搞定了。
然后,很快在國(guó)外網(wǎng)站找到了第四種方法:
這種方法只用了兩個(gè)函數(shù)就搞定了,應(yīng)該是最佳方法了。
測(cè)試了一下以上四種方法,假如當(dāng)前日期為'2017-1-13',當(dāng)生日為‘2013-1-14’時(shí),還差一天就要過(guò)生日了,離4歲只 差一天了,結(jié)果還是3歲,感覺(jué)不是很合理;把方法三改造一下,四舍五入得到方法五:
這樣計(jì)算出的年齡離實(shí)際的周歲最接近了,但可能方法四是最符合年齡定義的了。
1、方法一:把年份取出來(lái)后做減法。
2、采用算出天數(shù)除以365,再向上取整。
3、直接使用算年份差的函數(shù)。
名稱(chēng)欄目:mysql怎么算使用年齡 mysql計(jì)算年齡的函數(shù)
鏈接地址:http://chinadenli.net/article30/dohihso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、網(wǎng)站排名、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈、品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)