我对dateiff函数的结果很奇怪。 对于不同的和相同的时间戳,它为零?
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 |
+-------------------------------------------------------+
答案 0 :(得分:2)
datediff
将对日期进行计算并找出天数的差异,
但是,您可以timestampdiff使用hour
作为<{1}},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)
答案 1 :(得分:1)
如果你看一下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 |
+--------------------------------------------------------------------+
答案 2 :(得分:0)
如果要比较低于天的差异的两个时间戳,则应使用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: how to get the difference between two timestamps in seconds
希望这有助于:)