91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mysql中如何通過生日計算年齡

發布時間:2021-07-15 15:18:40 來源:億速云 閱讀:401 作者:小新 欄目:MySQL數據庫

這篇文章主要為大家展示了“Mysql中如何通過生日計算年齡”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Mysql中如何通過生日計算年齡”這篇文章吧。

方法一

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

方法一,作者也說出了缺陷,就是當日期為未來日期時結果為0,而不是負數;這里使用了5個函數和兩個運算符。

方法二

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

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

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

改良后方法一和方法二

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

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

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

方法三

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

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

然后,很快在國外網站找到了第四種方法:

方法四

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

這種方法只用了兩個函數就搞定了,應該是最佳方法了。

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

方法五

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

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

以上是“Mysql中如何通過生日計算年齡”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

健康| 舟曲县| 浦东新区| 察隅县| 留坝县| 斗六市| 洛扎县| 四川省| 锦屏县| 顺昌县| 牡丹江市| 沧源| 水城县| 兰西县| 洱源县| 夏津县| 小金县| 福建省| 广宗县| 湛江市| 永寿县| 马公市| 长白| 景谷| 望谟县| 革吉县| 西林县| 景德镇市| 垦利县| 沂源县| 泰宁县| 汕头市| 安化县| 屯留县| 洪洞县| 汉阴县| 衡东县| 巨鹿县| 宜城市| 门源| 灌云县|