mysql - MYSQL中如何判断两个日期之间的年月差?

标签 mysql sql

该数据库保存了所有年龄段的人的记录,包括 1 岁以下的 child ,其中月份很重要。

使用

SELECT TIMESTAMPDIFF(YEAR, dob, CURDATE()) AS age; 

您遇到的问题是任何 < 1 年的人都显示为 0;

使用

SELECT TIMESTAMPDIFF(MONTH, dob, CURDATE()) AS age; 

任何 1 岁以上的人都会在几个月后出现,因此 43 岁的人的年龄将超过 500 个月

使用

SELECT TIMESTAMPDIFF(MONTH, dob, CURDATE()) / 12 AS age; 

您可以获得一些结果,例如 3 个月大的 child 为 0.25,43 岁以上的 child 为 43.25

我想要实现的目标是这样的

  • 43岁3m
  • 0y 3m
  • 或者对于 < 1 年的人甚至只是 3m

如何在 mysql 查询中表达这样的内容?

最佳答案

 SELECT IF(TIMESTAMPDIFF(MONTH, dob, CURDATE())>12,TIMESTAMPDIFF(MONTH, dob, CURDATE())/12+ 'yeasrs old' , TIMESTAMPDIFF(MONTH, dob, CURDATE())+'months old')

关于mysql - MYSQL中如何判断两个日期之间的年月差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568916/

相关文章:

mysql - 具有平均子查询的 SQL 查询

php - 值在 TextView 中未传递到 Mysql 数据库

sql - 每个唯一 ID 一个值的 Postgres 总和

mysql - 建议用户按照SQL查询

java - 如何将对象或分组参数传递给 SQL IN 子句?

sql - rails/SQL : Find parents that have no child or have all children with a condition

mysql - 使用 LIKE 语句构建冷聚变查询问题

php - 日期时间值不正确

java - 并发请求下程序耗时较长

mysql - 查找 SQL 表中列的所有最大值