日期函数timestampdiff

TIMESTAMPDIFF函数的语法。

TIMESTAMPDIFF(unit,begin,end);

TIMESTAMPDIFF函数返回begin-end的结果,其中beginendDATEDATETIME表达式。

TIMESTAMPDIFF函数允许其参数具有混合类型,例如,beginDATE值,end可以是DATETIME值。 如果使用DATE值,则TIMESTAMPDIFF函数将其视为时间部分为“00:00:00”DATETIME值。

unit参数是确定(end-begin)的结果的单位,表示为整数。 以下是有效单位:

  • MICROSECOND
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

TIMESTAMPDIFF函数示例

以下示例将以月份值的形式返回2018-01-012018-06-01的差值:

mysql> SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-06-01') result;
+--------+
| result |
+--------+
|      5 |
+--------+
1 row in set

如果您希望看到差值,只需要将unit参数从MONTH更改为DAY,如下所示:

mysql> SELECT TIMESTAMPDIFF(DAY, '2010-01-01', '2010-06-01') result;
+--------+
| result |
+--------+
|    151 |
+--------+
1 row in set

以下语句返回两个DATETIME值(以分钟为单位)的差异值:

mysql> SELECT TIMESTAMPDIFF(MINUTE, '2018-01-01 10:00:00', '2018-01-01 10:45:00') result;
+--------+
| result |
+--------+
|     45 |
+--------+
1 row in set

TIMESTAMPDIFF函数计算年龄

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 Minsu', '1992-05-05'),
       ('Mary William', '1995-12-01');

使用TIMESTAMPDIFF来计算persons表中每个人的年龄:

select full_name,
       date_of_birth,
       timestampdiff(YEAR,date_of_birth,now()) 年龄
from persons;

image-20200904104606673

我们计算到今天的年龄,所以今天对应的就是 end;

开始时间和结束时间的顺序不同,可能会产生负值;

select full_name,
       date_of_birth,
       timestampdiff(YEAR,now(),date_of_birth) 年龄
from persons;

image-20200904104814443

Update time: 2020-09-04

results matching ""

    No results matching ""