Mysql 求出时间差:一招制胜(mysql求时间差)

Mysql有丰富的时间查询函数,可以快速地求取时间差。今天,让我来介绍下Mysql 求出时间差的一招制胜吧!

首先,要明确的是,mysql时间戳是从1970-01-01 00:00:00 开始的秒数,任何表示时间的数据都可以转换为固定的这个时间段。因此,我们可以将两个与时间相关的数据转换为秒数来比较大小,并根据相减结果得到对应的时间差。

具体操作如下:

1、将该两个时间戳之间的秒数,减去其中一个时间戳之前的秒数,来得出他们之间的时间差。

例如: 将’2020-04-20 11:10:00’和’2020-04-21 11: 12:00′ 之间的秒数,减去’2020-04-20 11:10:00’之前的秒数,即:

SELECT UNIX_TIMESTAMP('2020-04-21 11:12:00') - UNIX_TIMESTAMP('2020-04-20 11:10:00');

结果为:

17280

2、使用自定义函数 PERIOD_DIFF 求得时间差,参数分别是:第一个月份和第一个月份中的天数,第二个月份和第二个月份中的天数

例如: 计算’2015-02-04′ 和 ‘2017-11-27’的时间差,即:

SELECT PERIOD_DIFF(DATE_FORMAT('2015-02-04','%Y%m'), DATE_FORMAT('2017-11-27','%Y%m')) AS diff;

结果为:

36

3、计算时间最后一天和最后一个月的时间差

计算前一个月最后一天 的时间,可以使用下面的函数:

SELECT DATE_SUB(CURDATE(), INTERVAL DAY(CURDATE())-  1 DAY);

计算最后一个月之前最后一天的时间,可以使用下面的函数:

SELECT DATE_SUB(CURDATE(), INTERVAL MONTH(CURDATE()) DAY);

计算两个日期间时间差,可以使用下面的函数:

SELECT DATEDIFF('2017-04-30','2017-03-31') AS diff; 

结果为:

29

总结:

Mysql 求出时间差,有几种不同的方法,以及各种函数函数可以快速求出时间差,比如UNIX_TIMESTAMP()、PERIOD_DIFF()、DATEDIFF()等,非常方便。不管你是需要计算年月日,还是小时分秒,这些函数都可以满足你的需求,快速求出时间差,一招制胜!


数据运维技术 » Mysql 求出时间差:一招制胜(mysql求时间差)