MySQL TIMESTAMPDIFF函数
简介:在本教程中,您将学习如何使用MySQL TIMESTAMPDIFF函数来计算两个DATE或DATETIME值之间的差。
MySQL TIMESTAMPDIFF函数简介
下面说明了TIMESTAMPDIFF函数的语法。
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF函数返回begin-end的结果,其中begin和end是DATE或DATETIME表达式。
TIMESTAMPDIFF函数允许其参数具有混合类型,例如,begin是DATE值,end是DATETIME值。
如果使用DATE值,则TIMESTAMPDIFF函数会将其视为其时间部分为" 00:00:00"的DATETIME值。
unit参数确定以整数表示的(结束-开始)结果的单位。
以下是有效单位:
- 微秒
- 第二
- 分钟
- 小时
- 天
- 周
- 月
- 25美分硬币
- 年
MySQL TIMESTAMPDIFF函数示例
以下示例以月为单位返回2010-01-01和2010-06-01的差额:
SELECT TIMESTAMPDIFF(MONTH, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 5 | +--------+ 1 row in set (0.00 sec)
如果要查看天数差异,只需将unit参数从MONTH更改为DAY,如下所示:
SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result; +--------+ | result | +--------+ | 151 | +--------+ 1 row in set (0.00 sec)
以下语句以分钟为单位返回两个DATETIME值的差:
SELECT TIMESTAMPDIFF(MINUTE, '2010-01-01 10:00:00', '2010-01-01 10:45:00') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set (0.00 sec)
请注意,TIMESTAMPDIFF仅考虑与unit参数相关的时间部分。
请参见以下示例:
SELECT TIMESTAMPDIFF(MINUTE, '2010-01-01 10:00:00', '2010-01-01 10:45:59') result; +--------+ | result | +--------+ | 45 | +--------+ 1 row in set (0.00 sec)
差异应为45分钟59秒。
但是,我们将unit参数传递为MINUTE,因此该函数将按预期返回45分钟。
如果使用SECOND而不是MINUTE,则TIMESTAMPDIFF函数将考虑SECOND部分,如以下示例所示:
SELECT TIMESTAMPDIFF(SECOND, '2010-01-01 10:00:00', '2010-01-01 10:45:59') result; +--------+ | result | +--------+ | 2759 | +--------+ 1 row in set (0.00 sec)
45分钟59秒= 45 x 60 + 59(秒)= 2759秒
使用MySQL TIMESTAMPDIFF函数计算年龄
首先,我们为演示创建一个名为person的新表。
CREATE TABLE persons ( id INT AUTO_INCREMENT PRIMARY KEY, full_name VARCHAR(255) NOT NULL, date_of_birth DATE NOT NULL );
其次,我们在人员表中插入一些行:
INSERT INTO persons(full_name, date_of_birth) VALUES('John Doe', '1990-01-01'), ('David Taylor', '1989-06-06'), ('Peter Drucker', '1985-03-02'), ('Lily Smith', '1992-05-05'), ('Mary William', '1995-12-01');
第三,我们使用TIMESTAMPDIFF来计算人员表中每个人的年龄:
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, '2017-01-01') age FROM persons;
在此语句中,我们计算了2017年1月1日的年龄。
如果要计算当前年龄,可以使用NOW函数替换文字值2017-01-01,如下所示:
SELECT id, full_name, date_of_birth, TIMESTAMPDIFF(YEAR, date_of_birth, NOW()) age FROM persons;
在本教程中,您学习了如何使用MySQL TIMESTAMPDIFF函数来计算两个DATE或DATETIME值之间的差。