时间差异计算,其中日期和时间在单独的列中

时间:2010-05-03 16:41:05

标签: datetime mysql

我有一个查询,我试图在两个不同时间之间获得持续时间(例如6.5小时)。

在我的数据库中,时间和日期保存在不同的字段中,因此我可以有效地查询startDate或endDate,因为我从未专门按时查询。

我的查询看起来像这样

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(endTime,startTime)),0) FROM events WHERE user=18

有时一个事件会在一夜之间发生,所以时间之间的差异也需要考虑日期之间的差异。

我一直在尝试

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(CONCAT(endDate,' ',endTime),CONCAT(startDate,' ',startTime))),0) FROM events WHERE user=18

不幸的是,我这样做时只会出错,我似乎无法将这两个字段合并为一个时间戳。

2 个答案:

答案 0 :(得分:0)

非常确定您的问题是您的连接值是作为字符串而不是DATETIME发送到TIMEDIFF()的。尝试调用它们上的DATETIME函数:

SELECT COUNT(*), IFNULL(SUM(TIMEDIFF(DATETIME(CONCAT(endDate,' ',endTime)),DATETIME(CONCAT(startDate,' ',startTime)))),0) FROM events WHERE user=18

我没有在我面前测试MySQL DB,但我认为或者它的某些类似形式是你正在寻找的。在涉及MICROSECOND的MySQL文档中有一个例子:

http://dev.mysql.com/doc/refman/5.0/en/datetime.html

编辑:嗯......看起来像TIMEDIFF应该使用字符串。无论如何都值得尝试。

答案 1 :(得分:-1)

TIMEDIFF(endDate,startDate) + TIMEDIFF(endTime,startTime)