MySQL TIMESTAMPDIFF() 函数返回两个日期或日期时间值的差值。计算差异时,一个参数可以是日期值,另一个参数可以是日期时间值。如有必要,日期值将被处理为时间部分"00:00:00"。结果的单位(整数)由 unit 参数给出。
语法
TIMESTAMPDIFF(unit, datetime1, datetime2)
参数
datetime1 | 必填。 指定日期或日期时间值。 |
datetime2 | 必填。 指定日期或日期时间值。 |
unit | 必填。 指定差值的单位类型。它可以是以下值之一:
|
返回值
返回(datetime2 − datetime1)。结果的单位由 unit 参数给出。
示例 1:
下面的示例显示 TIMESTAMPDIFF()函数的用法 。
mysql> SELECT TIMESTAMPDIFF(DAY, '2019-10-15', '2019-10-25');
Result: 10
mysql> SELECT TIMESTAMPDIFF(DAY, '2019-10-15 10:20:25', '2019-10-25 12:40:45');
Result: 10
mysql> SELECT TIMESTAMPDIFF(HOUR, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 2
mysql> SELECT TIMESTAMPDIFF(MINUTE, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 140
mysql> SELECT TIMESTAMPDIFF(SECOND, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 8420
mysql> SELECT TIMESTAMPDIFF(MICROSECOND, '2019-10-25 10:20:25', '2019-10-25 12:40:45');
Result: 8420000000
mysql> SELECT TIMESTAMPDIFF(WEEK, '2018-10-25', '2020-03-25');
Result: 73
mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-10-25', '2020-03-25');
Result: 17
mysql> SELECT TIMESTAMPDIFF(QUARTER, '2018-10-25', '2020-03-25');
Result: 5
mysql> SELECT TIMESTAMPDIFF(YEAR, '2018-10-25', '2020-03-25');
Result: 1
示例 2:
考虑一个名为 EmployeeLogin 的数据库表,其中包含以下记录:
EmpID | Name | LoginStamp | LogoutStamp |
---|---|---|---|
1 | John | 2019-10-25 09:20:38 | 2019-10-25 17:42:55 |
2 | Marry | 2019-10-25 09:21:05 | 2019-10-25 17:43:23 |
3 | Jo | 2019-10-25 09:24:35 | 2019-10-25 17:48:56 |
4 | Kim | 2019-10-25 09:25:24 | 2019-10-25 17:49:12 |
5 | Ramesh | 2019-10-25 09:27:16 | 2019-10-25 17:42:08 |
要计算LoginStamp列和LogoutStamp列的记录之间的差异,可以使用以下查询:
SELECT *,
TIMESTAMPDIFF(HOUR, LoginStamp, LogoutStamp) AS TIMESTAMPDIFF_Value
FROM EmployeeLogin;
这将产生一个结果类似于:
EmpID | Name | LoginStamp | LogoutStamp | TIMESTAMPDIFF_Value |
---|---|---|---|---|
1 | John | 2019-10-25 09:20:38 | 2019-10-25 17:42:55 | 8 |
2 | Marry | 2019-10-25 09:21:05 | 2019-10-25 17:43:23 | 8 |
3 | Jo | 2019-10-25 09:24:35 | 2019-10-25 17:48:56 | 8 |
4 | Kim | 2019-10-25 09:25:24 | 2019-10-25 17:49:12 | 8 |
5 | Ramesh | 2019-10-25 09:27:16 | 2019-10-25 17:42:08 | 8 |