Mysql中如何通过生日计算年龄

49次阅读
没有评论

共计 1326 个字符,预计需要花费 4 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要为大家展示了“Mysql 中如何通过生日计算年龄”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让丸趣 TV 小编带领大家一起研究并学习一下“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 中如何通过生日计算年龄”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1326字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)