两个MySQL datetime之间的小时和分钟差异

3
我有一个MySQL查询,返回两个日期时间之间的差异。问题是查询只返回小时差异。
例如:
Datetime1 是 2015-12-16 08:00:00,Datetime2 是 2015-12-16 10:45:00
我希望返回的时间差为:02:45:00 而不仅仅是 02:00:00
我的查询语句是:
$query1 = "SELECT X, 
                  time_format(SUM(abs(timediff(datetime2, datetime1))),'%H:%m:%s') as SUM 
           FROM table1, table2 
           WHERE table1.Y = table2.Y 
             and DATE(datetime1) >= '$datepicker' 
             AND DATE(datetime1) <= '$datepicker1' 
           GROUP BY table.Y";

timediff 应该可以正常工作。 - Ravinder Reddy
2个回答

4

请试一下这个方法:

select timediff('2015-12-16 08:00:00','2015-12-16 10:45:00')

它正在工作。

谢谢 Amit


谁点赞了这个胡言乱语。这与问题有什么关系呢? - RiggsFolly
我已经添加了示例的答案,我们应该专注于概念方面,而不是寻找实际答案。 - Amit Shah
好的回答不应该以“试试这个”开头,它们应该包含你建议的原因。既然提问者已经在做你编写的代码,那么这个回答有什么好处?尝试这个又有什么启示呢? - RiggsFolly
通过尝试这个方法,我指的是你应该尝试使用它来格式化日期,而不是使用MySQL日期格式和其他函数进行操作。如果它解决了问题,开发人员将坚持使用它。 - Amit Shah
在这种情况下,在您的回答中说出来! - RiggsFolly
@RiggsFolly,我同意你的观点。我应该说你的回答非常感谢Amit。 - Amit Shah

2
据我所知,您用于计算时间差的查询语法是正确的,除了 time_format() 中的格式设置不正确之外。
分钟的格式应为 %i 而不是 %m,请更改后,它应该可以按预期工作。
time_format(SUM(abs(timediff(datetime2, datetime1))),'%H:%i:%s') as SUM 
                                                         ^^  

我犯了一个大错误:( 感谢你的回答。赞! - vallete7
顺便说一下,当我有多个包含小时和分钟的注册时,我遇到了问题。例如,注册1 - datetime1 2015-12-16 08:00:00 datetime2 2015-12-16 12:30:00 和注册2 - datetime1 2015-12-16 08:00:00 datetime2 2015-12-16 10:30:00,我得到的结果是“NULL”,为什么?附言:我已经解决了。我添加了time_format(SEC_TO_TIME(SUM(abs(TIME_TO_SEC(timediff(datetime2,datetime1))))),'%H:%i:%s') - vallete7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接