欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql中通過(guò)生日計(jì)算年齡的多種方法

 更新時(shí)間:2018年03月29日 11:11:52   作者:m0_38034994  
本文給大家分享mysql通過(guò)生日計(jì)算年齡的方法,每一種方法都非常不錯(cuò),需要的朋友參考下吧

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

方法一

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

方法一,作者也說(shuō)出了缺陷,就是當(dāng)日期為未來(lái)日期時(shí)結(jié)果為0,而不是負(fù)數(shù);這里使用了5個(gè)函數(shù)和兩個(gè)運(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ù)的問(wèn)題,但看起來(lái)更復(fù)雜;這里使用了6個(gè)函數(shù)和3個(gè)運(yùn)算符。

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

改良后方法一和方法二

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

改良后的方法一,少了一個(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'縮寫格式時(shí),取右邊的五位取出的是‘3-1-1',會(huì)導(dǎo)致出錯(cuò)。

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

方法三

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

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

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

方法四

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

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

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

方法五

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

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

總結(jié)

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

相關(guān)文章

  • MySQL的重裝問(wèn)題解決方法

    MySQL的重裝問(wèn)題解決方法

    最近在工作上遇到了MySQL重裝的問(wèn)題,今天記錄一下我的解決過(guò)程。不論我用控制面板的卸載刪除程序方式還是安全衛(wèi)士的卸載,都會(huì)遇到一個(gè)問(wèn)題,就是安裝到如下圖位置,server start時(shí)就程序無(wú)響應(yīng)了,一直死在那里
    2013-04-04
  • MySQL如何保證備份數(shù)據(jù)的一致性詳解

    MySQL如何保證備份數(shù)據(jù)的一致性詳解

    在高并發(fā)的場(chǎng)景下,大量的請(qǐng)求直接訪問(wèn)Mysql很容易造成性能問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL如何保證備份數(shù)據(jù)一致性的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • MySQL密碼正確卻無(wú)法本地登錄-1045

    MySQL密碼正確卻無(wú)法本地登錄-1045

    這篇文章主要介紹了MySQL密碼正確卻無(wú)法本地登錄-1045 Access denied for user 'root'@'localhost' (using password:YES,需要的朋友可以參考下
    2019-12-12
  • 深入mysql外鍵關(guān)聯(lián)問(wèn)題的詳解

    深入mysql外鍵關(guān)聯(lián)問(wèn)題的詳解

    本篇文章是對(duì)mysql外鍵關(guān)聯(lián)問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • mysql中event的用法詳解

    mysql中event的用法詳解

    本篇文章是對(duì)mysql中event的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • SQL中"1=1"的陷阱:為什么應(yīng)避免使用

    SQL中"1=1"的陷阱:為什么應(yīng)避免使用

    "1=1"在SQL中可能看似無(wú)害,但它卻是一個(gè)隱藏的陷阱,這個(gè)簡(jiǎn)單的表達(dá)式可能會(huì)導(dǎo)致你的查詢結(jié)果出現(xiàn)偏差,甚至可能引發(fā)安全問(wèn)題,本指南將揭示這個(gè)陷阱,教你如何避免使用"1=1",讓你的數(shù)據(jù)庫(kù)操作更加安全、準(zhǔn)確,讓我們一起揭開(kāi)"1=1"的秘密,提升你的SQL技能!
    2024-02-02
  • mysql和oracle的區(qū)別小結(jié)(功能性能、選擇、使用它們時(shí)的sql等對(duì)比)

    mysql和oracle的區(qū)別小結(jié)(功能性能、選擇、使用它們時(shí)的sql等對(duì)比)

    這篇文章主要介紹了mysql和oracle的區(qū)別小結(jié),主要包括功能性能、選擇、使用它們時(shí)的sql等對(duì)比,需要的朋友可以參考下
    2020-02-02
  • Mysql主從同步Last_IO_Errno:1236錯(cuò)誤解決方法

    Mysql主從同步Last_IO_Errno:1236錯(cuò)誤解決方法

    最近遇到Mysql主從同步的Last_IO_Errno:1236錯(cuò)誤問(wèn)題,然后在網(wǎng)上查找相關(guān)解決方案,這里分享給大家,供參考。
    2017-10-10
  • 詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案

    詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案

    這篇文章主要介紹了詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案,遇到這個(gè)問(wèn)題的朋友,可以看一下。
    2016-11-11
  • Mysql查詢語(yǔ)句優(yōu)化技巧

    Mysql查詢語(yǔ)句優(yōu)化技巧

    這篇文章主要介紹了Mysql查詢語(yǔ)句優(yōu)化技巧的相關(guān)資料,需要的朋友可以參考下
    2016-04-04

最新評(píng)論