2009-09-22 66 views
10

例如,如何计算这些两个日期时间之间的间隔:如何计算MySQL中的datetime间隔?

2009-09-18 00:00:00

2009-10-17 00:00:00

EDIT

我的意思是让在年 - 月 - 日时的格式的时间间隔:分:秒

回答

9

关于使用datediff什么:

mysql> select abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00')); 
+-------------------------------------------------------------+ 
| abs(datediff('2009-09-18 00:00:00', '2009-10-17 00:00:00')) | 
+-------------------------------------------------------------+ 
|               29 | 
+-------------------------------------------------------------+ 
1 row in set (0.00 sec) 

引述手册:

DATEDIFF()回报expr1 – expr2 表示为天的值从一个 日期到另一个。 expr1和expr2 是日期或日期和时间表达式。
只有计算中使用的值的日期部分是 。

1

你可以只减去日期时间,它会返回值:

select(now() - interval 2 day) - (now() - interval 5 day);

结果不是日期时间(这是一些十进制编码日期 - 在这种情况下为三天3000000),但将日期时间和时间间隔视为相同的数据类型并不正确。

1

或者使用TIMESTAMPDIFF()是这样的:

TIMESTAMPDIFF(微秒,yourtime,现在())

所述第一参数的MySQL日期时间单元,可以是“微秒,第二,分,小时,日,年“,这个函数表示第三个参数datetime减去第二个参数datetime。

mysql> select timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00"); 
+---------------------------------------------------------------------+ 
| timestampdiff(second, "2009-09-18 00:00:00", "2009-10-17 00:00:00") | 
+---------------------------------------------------------------------+ 
|                2505600 | 
+---------------------------------------------------------------------+ 
1 row in set (0.00 sec)