我得到的datediff函数结果很奇怪。不同和相同的时间戳为零?
select datediff('2015-04-25 20:37:45','2015-04-25 05:20:00');
+-------------------------------------------------------+
| datediff('2015-04-25 20:37:45','2015-04-25 05:20:00') |
+-------------------------------------------------------+
| 0 |
+-------------------------------------------------------+
select datediff('2015-04-25 20:37:45','2015-04-25 20:37:45');
+-------------------------------------------------------+
| datediff('2015-04-25 20:37:45','2015-04-25 20:37:45') |
+-------------------------------------------------------+
| 0 |
+-------------------------------------------------------+
datediff
将计算日期并找到天数的差异,但是,您可以将时间戳差异用于不同的差异,例如hour
,min
等
mysql> select timestampdiff(hour,'2015-04-25 05:20:00','2015-04-25 20:37:45') as hour;
+------+
| hour |
+------+
| 15 |
+------+
1 row in set (0.00 sec)
如果你看一下MySQL手册:
DATEDIFF
DATEDIFF() 返回 expr1 − expr2,表示为从一个日期到另一个日期的天数值。expr1 和 expr2 是日期和时间表达式。计算中仅使用值的日期部分
所以你得到的是正确的。
如果您正在寻找时差,我建议您查看TIMEDIFF
或TIMESTAMPDIFF
。
如果您想在几分钟内获得差异,最好的方法是 TIMESTAMPDIFF
.
下面是如何执行此操作的示例:
SELECT TIMESTAMPDIFF(MINUTE, '2015-04-25 20:37:45','2015-04-25 05:20:00');
+--------------------------------------------------------------------+
| TIMESTAMPDIFF(MINUTE, '2015-04-25 20:37:45','2015-04-25 05:20:00') |
+--------------------------------------------------------------------+
| -917 |
+--------------------------------------------------------------------+
如果你想比较两个差异小于天的时间戳,你应该使用 TIMEDIFF() 函数而不是 DATEDIFF。例如:
select TIMEDIFF('2015-04-25 20:37:45','2015-04-25 05:20:00');
或以秒为单位的结果:
select TIME_TO_SEC(TIMEDIFF('2015-04-25 20:37:45','2015-04-25 05:20:00'));
有关更多详细信息:
MySQL:如何在几秒钟内获取两个时间戳之间的差异
希望这对:)有所帮助