转自:https://www.cnblogs.com/leilong/p/8365460.html?ivk_sa=1024320u
方法一:
SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age
使用TO_DAYS()和FROM_DAYS()两个函数完成日期和天数之间的转换,最后取日期中的年分,语句末尾的 +0 是为了去掉日期格式转换之后 前面的 0 。
改进:
SELECT YEAR(FROM_DAYS(DATEDIFF(NOW(),birthday)) )FROM employee_out;
方法二:
SELECT YEAR(CURDATE())-YEAR('2019-02-02')-(RIGHT(CURDATE(),5)<RIGHT('2019-02-02',5));
这样处理是为了计算当前年小于需要计算的年份的情况,当当前年小于需要计算的年份时,查询的结果为负数。
方法三:
SELECT FLOOR(DATEDIFF(CURDATE(), '1993-01-23')/365.2422)
算出天数除以公历一年的天数,下取整,计算出实际年龄。
方法四:(推荐)
SELECT TIMESTAMPDIFF(YEAR,'1993-01-02',CURDATE())
计算日期之间相差的年数,即为年龄。
TIMESTAMPDIFF函数
TIMESTAMPDIFF函数用于计算两个日期的时间差
语法结构
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
转自:https://www.jianshu.com/p/0b098620474b
参数说明
unit: 日期比较返回的时间差单位,常用可选值如下:
SECOND:秒
MINUTE:分钟
HOUR:小时
DAY:天
WEEK:星期
MONTH:月
QUARTER:季度
YEAR:年
datetime_expr1: 要比较的日期1
datetime_expr2: 要比较的日期2
TIMESTAMPDIFF函数返回datetime_expr2 - datetime_expr1的结果,其中datetime_expr1和datetime_expr2可以是DATE或DATETIME类型值