方法一

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)

改良后的方法一,少了一个函数和一个运算符,当日期为未来日期时计算结果还是为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秒),然后取整。这样只用了三个函数和一个运算符就搞定了。

mysql计算年龄_MySQL根据出生日期计算年龄的三种方法比较相关推荐

  1. mysql数据库包含_MySQL数据库判断字符串包含的三种方法

    方法一:SELECT * FROM users WHERE emails like "%b@email.com%"; 方法二: 利用 mysql 字符串函数 find_in_set ...

  2. mysql重复写入_MYSQL避免重复插入记录的三种方法

    方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: insert ignore into table_name(email ...

  3. php mysql 表字段_php mysql获取表字段名称和字段信息的三种方法

    php mysql获取表字段名称和字段信息的三种方法 先给出本实例中使用的表的信息: 使用desc获取表字段信息 php代码如下: mysql_connect("localhost" ...

  4. mysql数据库最后一步卡住了_[数据库]解决MySQL安装到最后一步未响应的三种方法...

    [数据库]解决MySQL安装到最后一步未响应的三种方法 0 2018-07-13 01:01:27 这种情况一般是你以前安装过MySQL数据库服务项被占用了. 解决方法: 方法一:安装MySQL的时候 ...

  5. mysql 统计条目_mysql 统计表中条目数量的几种方法

    mysql 统计表中条目数量的几种方法 展开 通常的方法是: select count(*) from `table_name` select count(1) from `table_name` s ...

  6. mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析

    前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...

  7. mysql 安全删除_mysql的binlog安全删除的一种方法

    指定过期天数(expire_logs_days) ---适用于单机版mysql! 该参数为全局可动态调整参数,默认值为0,即关闭,取值范围0-99. 1.3.1 参数的查看: mysql> sh ...

  8. 装mysql最后一步没响应_解决MySQL安装到最后一步未响应的三种方法

    这种情况一般是你以前安装过MySQL数据库服务项被占用了. 解决方法: 方法一:安装MySQL的时候在这一步时它默认的服务名是"MySQL" 只需要把这个名字改了就可以了.可以把默 ...

  9. 免费计算机群,获得大量的微信群的三种方法

    随着微信的普及,微信群已经成为人与人们之间重要的交流工具之一, 这让一些想要从微信群了解到信息的人也蠢蠢欲动,那要怎么样获得大量的微信群呐?送你这三招. 方法一.微信群互换 通过"微信群互换 ...

最新文章

  1. 老生常谈--GetROProperty,GetTOProperty,SetTOProperty的区别
  2. JVM---垃圾回收算法详解
  3. [USACO09Open] Tower of Hay 干草塔
  4. toString(radix)
  5. 完美者右键扩展菜单管理器 1.2.1 中文绿色版
  6. 物联网大数据平台软件开发架构案例解析
  7. .NET Core中延迟单例另一种写法【.NET Core和.NET Framework的beforefieldinit差异】
  8. ubuntu播放文件需要MPEG-4 AAC解码器
  9. linux 番茄时间,Linux下自制简易番茄钟
  10. c++ 制作木马病毒
  11. shell提示Algorithm negotiation fail
  12. UltraCompare v2022文本比较
  13. [转载] OpenCV—利用回调函数实现返回鼠标点击位置的坐标和灰度值
  14. 小白刷LeeCode(算法篇)2
  15. Elasticsearch:运用 Pinned query 来提升特定的结果
  16. redit mysql_【Voten】基于Laravel实现的类似Reddit的实时社交论坛系统
  17. JS处理JSON字符串转数组,数字超17为处理方法
  18. 微信真的在后台频繁读取用户相册吗?
  19. bzoj1193:马步距离
  20. Altium Designer 19.1.18 - 更改铺铜的透明度

热门文章

  1. 接口测试(python+requests)
  2. 数理统计三(随机分布)
  3. Transformers in Vision: A Survey论文翻译
  4. 前端JavaScript代码混淆加密原理介绍
  5. 假设检验-方差齐性检验
  6. 数理统计方差齐性检验Python实现
  7. 限制EditText为单行
  8. 【北邮国院大二下】产品开发与营销知识点整理 Topic4
  9. 最高效的七个云原生开发原则
  10. 数据预处理之数据合并(基于pandas)