MySQL TIMEDIFF(DATE,DATETIME)

时间:2014-06-25 14:43:35

标签: mysql date datetime

我在MySQL数据库中有两列。

一个是DATE格式,如2014-01-26,另一个是DATETIME格式:2014-01-25 17:19:07。

我需要应用TIMEDIFF(2014-01-26,2014-01-25 17:19:07)函数,但它要求两个变量都采用DATETIME格式。我怎样才能将2014-01-26转换为2014-01-26 00:00:00?

2 个答案:

答案 0 :(得分:1)

您可以使用date_format()

mysql> select 
TIMEDIFF(date_format('2014-01-26','%Y-%m-%d %H:%i:%s'), '2014-01-25 17:19:07') 
as diff;
+----------+
| diff     |
+----------+
| 06:40:53 |
+----------+
1 row in set (0.00 sec)


mysql> select date_format('2014-01-26','%Y-%m-%d %H:%i:%s') as date;
+---------------------+
| date                |
+---------------------+
| 2014-01-26 00:00:00 |
+---------------------+
1 row in set (0.00 sec)

答案 1 :(得分:1)

您始终可以将日期转换为日期时间

select timediff(cast(<yourDateColumn> as Datetime), <yourDatetimeColumn>)

但我甚至不确定你是否需要施放(取决于你的mysql版本),我可能会误解文档,但我们可以阅读

  

在MySQL 5.1.18之前,将DATE值与DATETIME进行比较   值,DATETIME值的时间部分被忽略,或者   比较可以作为字符串比较来执行。从MySQL开始   5.1.18,通过将时间部分添加为&00; 00:00:00&#39;,将DATE值强制转换为DATETIME类型。要模仿旧行为,请使用CAST()   函数使比较操作数被如前处理。   例如: