# **TIMESTAMPDIFF()**

## **函数说明**

`TIMESTAMPEDIFF()` 返回一个整数，表示在给定的时间单位内，从第一个日期时间表达式到第二个日期时间表达式之间的时间间隔。即 `datetime_expr2` 与 `datetime_expr1` 的差值。`datetime_expr1` 和 `datetime_expr2` 是日期或日期时间表达式；一个表达式可以是日期，另一个表达式可以是日期时间，日期值被视为具有时间部分 `00:00:00` 的日期时间。

如果 `datetime_expr1` 或 `datetime_expr2` 为 `NULL`，则此函数返回 `NULL`。

## **函数语法**

```text
> TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
```

## **参数释义**

|  参数   | 说明  |
|  ----  | ----  |
|  unit| 是一个字符串，表示时间间隔的单位。这可以是 `MICROSECOND`、`SECOND`、`MINUTE`、`HOUR`、`DAY`、`WEEK`、`MONTH` 或 `YEAR` 等。 |
| datetime_expr1,datetime_expr2  | 必要参数。datetime_expr1 和 datetime_expr2 表达式需要具有相同的类型。datetime_expr1 和 datetime_expr2 是转换为 `TIME` 或 `DATETIME` 表达式的字符串。如果 datetime_expr1 或 datetime_expr2 为 `NULL` 则返回 `NULL`。 |

## **示例**

- 示例 1：

```text
mysql> SELECT TIMESTAMPDIFF( MICROSECOND, '2017-12-01 12:15:12','2018-01-01 7:18:20');
+---------------------------------------------------------------------+
| timestampdiff(microsecond, 2017-12-01 12:15:12, 2018-01-01 7:18:20) |
+---------------------------------------------------------------------+
|                                                       2660588000000 |
+---------------------------------------------------------------------+
1 row in set (0.00 sec)
```

- 示例 2：

```text
drop table if exists t1;
create table t1(a date,  b date);
insert into t1 values('2019-11-01 12:15:12', '2018-01-01 12:15:12');
insert into t1 values('2019-10-01 12:15:12', '2018-01-01 12:15:12');
insert into t1 values('2020-10-01 12:15:12', '2018-01-01 12:15:12');
insert into t1 values('2021-11-01 12:15:12', '2018-01-01 12:15:12');
insert into t1 values('2022-01-01 12:15:12', '2018-01-01 12:15:12');
insert into t1 values('2018-01-01 12:15:12', '2019-11-01 12:15:12');
insert into t1 values( '2018-01-01 12:15:12', '2019-10-01 12:15:12');
insert into t1 values( '2018-01-01 12:15:12', '2020-10-01 12:15:12');
insert into t1 values( '2018-01-01 12:15:12', '2021-11-01 12:15:12');
insert into t1 values( '2018-01-01 12:15:12', '2022-01-01 12:15:12');

mysql> SELECT a, b, TIMESTAMPDIFF(MICROSECOND, a, b) from t1;
+------------+------------+----------------------------------+
| a          | b          | timestampdiff(microsecond, a, b) |
+------------+------------+----------------------------------+
| 2019-11-01 | 2018-01-01 |                  -57801600000000 |
| 2019-10-01 | 2018-01-01 |                  -55123200000000 |
| 2020-10-01 | 2018-01-01 |                  -86745600000000 |
| 2021-11-01 | 2018-01-01 |                 -120960000000000 |
| 2022-01-01 | 2018-01-01 |                 -126230400000000 |
| 2018-01-01 | 2019-11-01 |                   57801600000000 |
| 2018-01-01 | 2019-10-01 |                   55123200000000 |
| 2018-01-01 | 2020-10-01 |                   86745600000000 |
| 2018-01-01 | 2021-11-01 |                  120960000000000 |
| 2018-01-01 | 2022-01-01 |                  126230400000000 |
+------------+------------+----------------------------------+
10 rows in set (0.00 sec)
```
