在 MariaDB 中根据生日计算年龄

本文描述了如何在 MariaDB 中使用 TIMESTAMPDIFF() 函数计算年龄。

发布于

在 MariaDB 中, TIMESTAMPDIFF() 函数用来计算两个时间之间的差。因此您可以使用它来计算年龄。

TIMESTAMPDIFF()是一个内置的日期和时间函数,它返回两个日期或日期时间表达式之间的差值。它接受三个参数,第一个参数为返回的时间差的单位,第二个参数和第三个参数为两个日期时间值。因此如果您需要使用 TIMESTAMPDIFF() 计算年龄,第一个参数应传入 YEAR,第二个参数传入出生日期,第三个参数传入当前日期。

示例 1

下面是一个演示示例:

SELECT TIMESTAMPDIFF(YEAR, '1988-12-10', CURDATE()) AS age;

输出:

+------+
| age  |
+------+
|   33 |
+------+

在这里,我们使用了 CURDATE() 返回当前日期。

示例 2

假设我们有以下数据表 student

SELECT * FROM student;
+------------+------+------------+
| student_id | name | birthday   |
+------------+------+------------+
|          1 | Tim  | 2012-04-03 |
|          2 | Jim  | 2013-05-06 |
|          3 | Lucy | NULL       |
+------------+------+------------+
3 rows in set (0.00 sec)

让我们使用以下语句返回所有学生的年龄,然后按年龄降序对结果进行排序:

SELECT
    student_id,
    name,
    birthday,
    CURDATE(),
    TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM student
ORDER BY age DESC;

输出:

+------------+------+------------+------------+------+
| student_id | name | birthday   | CURDATE()  | age  |
+------------+------+------------+------------+------+
|          1 | Tim  | 2012-04-03 | 2022-12-06 |   10 |
|          2 | Jim  | 2013-05-06 | 2022-12-06 |    9 |
|          3 | Lucy | NULL       | 2022-12-06 | NULL |
+------------+------+------------+------------+------+
3 rows in set (0.00 sec)

当参数为 NULL 时, TIMESTAMPDIFF() 返回 NULL

结论

本文讨论了如何使用 TIMESTAMPDIFF() 函数计算年龄。