MySQL中两个时间字段的分钟差异

MySQL中两个时间字段的分钟差异,mysql,time,Mysql,Time,我用“时间”字段设置MySQL数据库 它不是传统意义上的HH:MM,它是事件发生的时间,因此值为5:45的事件在游戏还剩5分45秒时发生。12点25分,还有12分25秒,以此类推 我希望能够找出经过的总时间,所以如果我有一个事件发生在12:25,下一个事件发生在5:45,我希望能够得到差值,等于6:40。然后,我想用十进制表示,在这个例子中是6.67 这可能吗 提前感谢。我使用了UNIX\u时间戳(event1)-UNIX\u时间戳(event2),它为您提供事件之间的秒数。除以60.0,你将得

我用“时间”字段设置MySQL数据库

它不是传统意义上的HH:MM,它是事件发生的时间,因此值为5:45的事件在游戏还剩5分45秒时发生。12点25分,还有12分25秒,以此类推

我希望能够找出经过的总时间,所以如果我有一个事件发生在12:25,下一个事件发生在5:45,我希望能够得到差值,等于6:40。然后,我想用十进制表示,在这个例子中是6.67

这可能吗

提前感谢。

我使用了UNIX\u时间戳(event1)-UNIX\u时间戳(event2),它为您提供事件之间的秒数。除以60.0,你将得到一个符合你要求的小数点。此解决方案假定您的列是日期兼容的值。如果它们是时间戳,它的工作速度会非常快


更新:此解决方案仅适用于时间戳数据类型,而不是原始问题中的时间数据类型。

我需要类似的解决方案。两个有用的功能:和

e、 g.如果您的时间域是正常的HH:MM次,则

SELECT (TIME_TO_SEC(end_time) - TIME_TO_SEC(start_time))/60 AS `minutes` 
在你的情况下,据我所知,时间是倒退的,即12:00只需使用

TIMEDIFF(fromtime, totime):

SELECT TIMEDIFF("12:25", "5:45");
如果您需要十进制,请使用
TIME\u TO_SEC()/3600
(它假设您已经过了秒,但您存储时间的格式很模糊,SQL可能会将其解释为HH:MM-您可以使用
CONCAT(“00:,MinuteSecondField”)
修复此问题,然后您可以使用
TIME\u TO_SEC()/60
,哪个更正确)

对我来说,这很有效:

TIMESTAMPDIFF(MINUTE, T0.created, T0.modified)

参考资料:

你用什么数据类型来存储这些值?@Brian我用了“时间”数据类型,因为没有附加日期。我也犯了同样的错误。以后执行类似这样的操作时,您不会处理时间类型列。您总是以分钟(小数)为单位存储,以便以后处理,这样更容易过滤。提问者说,他们将字段设置为时间字段。UNIX_时间戳需要datetime/TIMESTAMP字段;也不会工作哦也因为你暗示数据库是你自己的设计-也许考虑使用一个时间戳字段,或者一个整数字段(并且只在其中存储秒-除以60来得到你的最小值。第二个十进制值)谢谢你的回答,我不知道时间戳存在!
TIMESTAMPDIFF(MINUTE, T0.created, T0.modified)