婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Mysql中通過生日計算年齡的多種方法

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

熱門標簽:銀川電銷外呼系統定制 甘孜電話機器人廠家 做地圖標注都需要什么工具 電銷機器人好品牌門薩維l 中科嘉智人工智能電銷機器人 哈爾濱crm外呼系統價格 西安400電話在哪里辦理 凱立德科技館地圖標注 上海智能外呼系統需要多少錢

以前使用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中通過生日計算年齡,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • Postgresql 通過出生日期獲取年齡的操作
  • Mysql出生日期轉換為年齡并分組統計人數的方法示例
  • sql通過日期判斷年齡函數的示例代碼

標簽:山南 安康 那曲 平頂山 四川 浙江 安徽 濮陽

巨人網絡通訊聲明:本文標題《Mysql中通過生日計算年齡的多種方法》,本文關鍵詞  Mysql,中通,過生日,計算,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql中通過生日計算年齡的多種方法》相關的同類信息!
  • 本頁收集關于Mysql中通過生日計算年齡的多種方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 平山县| 建阳市| 上林县| 新兴县| 龙山县| 克什克腾旗| 安义县| 磐石市| 都江堰市| 潮安县| 清水县| 红原县| 漳平市| 和田市| 伊川县| 烟台市| 永清县| 略阳县| 鄯善县| 永定县| 沅江市| 海伦市| 丹东市| 昆明市| 昌宁县| 和政县| 凤凰县| 拉孜县| 丰顺县| 康马县| 嘉兴市| 伊春市| 廊坊市| 威宁| 周口市| 晋中市| 泰顺县| 临沂市| 海阳市| 龙山县| 连城县|