人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Mysql中通過生日計算年齡的多種方法

發(fā)布日期:2022-03-25 17:20 | 文章來源:源碼中國

以前使用mysql不是很多,對mysql的函數(shù)也不是很熟悉,遇到這個問題第一時間百度搜索,搜索到這兩種方法,這兩種方法是排在百度第一條的博客。

方法一

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age

方法一,作者也說出了缺陷,就是當(dāng)日期為未來日期時結(jié)果為0,而不是負(fù)數(shù);這里使用了5個函數(shù)和兩個運(yùn)算符。

方法二

SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(birthday, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(birthday, '00-%m-%d')) AS age

方法二,解決了方法一為負(fù)數(shù)的問題,但看起來更復(fù)雜;這里使用了6個函數(shù)和3個運(yùn)算符。

看了這篇貼子后,我就暈了,怎么會這么復(fù)雜,以前用Sql Server很簡單就可以了。我堅信一定有簡單高效的方法。很快就找到了根據(jù)以上方法改良后的方法。

改良后方法一和方法二

SELECT year( from_days( datediff( now( ), birthdate)));
SELECT YEAR(CURDATE())-YEAR(birthday)-(RIGHT(CURDATE(),5)<RIGHT(birthday,5));

改良后的方法一,少了一個函數(shù)和一個運(yùn)算符,當(dāng)日期為未來日期時計算結(jié)果還是為0;
改良后的方法二,還是6個函數(shù)和3個運(yùn)算符,看起來簡單些;取日期的右邊五位,當(dāng)日期格式為‘2013-01-01'時取到的是‘01-01',沒有問題;當(dāng)日期格式為‘2013-1-1'縮寫格式時,取右邊的五位取出的是‘3-1-1',會導(dǎo)致出錯。

然后自己根據(jù)MYSQL的幫助文檔中的日期函數(shù)想到了第三種方法:

方法三

SELECT FLOOR(DATEDIFF(CURDATE(), @birthday)/365.2422)

取生日和當(dāng)前日期之前的天數(shù)除以一年的實(shí)際天數(shù)(365天5小時48分46秒),然后取整。這樣只用了三個函數(shù)和一個運(yùn)算符就搞定了。

然后,很快在國外網(wǎng)站找到了第四種方法:

方法四

 SELECT TIMESTAMPDIFF(YEAR, @birthday, CURDATE())

這種方法只用了兩個函數(shù)就搞定了,應(yīng)該是最佳方法了。

測試了一下以上四種方法,假如當(dāng)前日期為'2017-1-13',當(dāng)生日為‘2013-1-14'時,還差一天就要過生日了,離4歲只 差一天了,結(jié)果還是3歲,感覺不是很合理;把方法三改造一下,四舍五入得到方法五:

方法五

SELECT ROUND(DATEDIFF(CURDATE(), @birthday)/365.2422)

這樣計算出的年齡離實(shí)際的周歲最接近了,但可能方法四是最符合年齡定義的了。

總結(jié)

以上所述是小編給大家介紹的Mysql中通過生日計算年齡,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對本站網(wǎng)站的支持!

香港服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部