这篇文章主要介绍了mysql中TIMESTAMPDIFF的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1. Syntax
TIMESTAMPDIFF(unit,begin,end); 根据单位返回时间差,对于传入的begin和end不需要相同的数据结构,可以存在一个为Date一个DateTime
2. Unit
支持的单位有
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
3. Example
下面这个例子是对于TIMESTAMPDIFF最基本的用法,
SELECT TIMESTAMPDIFF(MONTH, '2017-01-01', '2017-02-01') as result;
+--------+
| result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
SELECT TIMESTAMPDIFF(DAY, '2017-01-01', '2017-02-01') as result;
+--------+
| result |
+--------+
| 31 |
+--------+
1 row in set (0.00 sec)
SELECT TIMESTAMPDIFF(MINUTE, '2017-01-01 08:00:00', '2017-01-01 08:55:00') result;
+--------+
| result |
+--------+
| 55 |
+--------+
1 row in set (0.00 sec)
SELECT TIMESTAMPDIFF(MINUTE, '2017-01-01 08:00:00', '2017-01-01 08:55:33') result;
+--------+
| result |
+--------+
| 55 |
+--------+
1 row in set (0.00 sec)

SELECT TIMESTAMPDIFF(SECOND, '2017-01-01 08:00:00', '2017-01-01 08:55:33') result;
55 * 60 + 33 = 3333
+--------+
| result |
+--------+
| 3333 |
+--------+
1 row in set (0.00 sec)
3.7 如何求数据库中两个date字段的diff
3.7.1 建表
CREATE TABLE demo (id INT AUTO_INCREMENT PRIMARY KEY, start_time DATE NOT NULL, end_time DATE NOT NULL);
Query OK, 0 rows affected (0.10 sec)
3.7.2 添加数据
INSERT INTO demo(start_time, end_time)
VALUES('1983-01-01', '1990-01-01'),
('1983-01-01', '1989-06-06'),
('1983-01-01', '1985-03-02'),
('1983-01-01', '1992-05-05'),
('1983-01-01 11:12:11', '1995-12-01');
3.7.3 直接query数据
select * from demo;
+----+------------+------------+
| id | start_time | end_time |
+----+------------+------------+
| 1 | 1983-01-01 | 1990-01-01 |
| 2 | 1983-01-01 | 1989-06-06 |
| 3 | 1983-01-01 | 1985-03-02 |
| 4 | 1983-01-01 | 1992-05-05 |
| 5 | 1983-01-01 | 1995-12-01 |
+----+------------+------------+
5 rows in set (0.00 sec)
3.7.4 计算duration
select *, TIMESTAMPDIFF(YEAR, start_time, end_time) as duration from demo;
+----+------------+------------+----------+
| id | start_time | end_time | duration |
+----+------------+------------+----------+
| 1 | 1983-01-01 | 1990-01-01 | 7 |
| 2 | 1983-01-01 | 1989-06-06 | 6 |
| 3 | 1983-01-01 | 1985-03-02 | 2 |
| 4 | 1983-01-01 | 1992-05-05 | 9 |
| 5 | 1983-01-01 | 1995-12-01 | 12 |
+----+------------+------------+----------+
5 rows in set (0.00 sec)
3.7.5 其他应用
select *, if(TIMESTAMPDIFF(YEAR, end_time, CURRENT_TIMESTAMP())< 26 ,'< 26','>= 26') as result from demo;
+----+------------+------------+--------+
| id | start_time | end_time | result |
+----+------------+------------+--------+
| 1 | 1983-01-01 | 1990-01-01 | >= 26 |
| 2 | 1983-01-01 | 1989-06-06 | >= 26 |
| 3 | 1983-01-01 | 1985-03-02 | >= 26 |
| 4 | 1983-01-01 | 1992-05-05 | < 26 |
| 5 | 1983-01-01 | 1995-12-01 | < 26 |
+----+------------+------------+--------+
5 rows in set (0.00 sec)
感谢你能够认真阅读完这篇文章,希望小编分享的“mysql中TIMESTAMPDIFF的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持天达云,关注天达云行业资讯频道,更多相关知识等着你来学习!