在MySQL中存储时间间隔值的最佳方法?

7 mysql

愚蠢容易出问题,但我一直未能找到优雅的解决方案.我想在MySQL列中存储时间间隔,例如:

1:40(1小时40分钟)0:30(30分钟)

然后能够运行查询,总结它们.现在我将它们存储为INT值(1.40),但我必须手动进行添加(除非我错过了一种更简单的方法).

TIME列类型只存储长达900小时(约,我认为),所以这几乎是无用的,因为我跟踪了数十万小时(我存储了一个字段,其中包含许多不同条目的总和).

谢谢!

lon*_*eck 10

只存储分钟,所以1:40存储为100.这使得容易添加:100 + 30 = 130.当你显示时,做数学转换回小时:分钟.130分钟 - > 2:10.

  • 是的,如果您需要跟踪秒数,那么请做几秒钟.但问题只是询问分钟. (2认同)

Jak*_*son 6

我只需将它们存储在INT字段中,如秒或分钟(或者您正在使用的最低时间值).

例如,您希望存储以下时间值1小时34分25秒:

那是5665秒.因此,只需将值存储为INT字段中的5665即可

稍后,假设您要存储时间值56分7秒:

那是3367秒.

稍后总结一下:5665 + 3367 = 9032秒

将其转换回小时,分钟,秒,你得到2小时30分32秒.是的,你必须进行数学计算以进行转换,但这是一个非常简单的计算,并且由于你只是在存储INT之前或者在检索INT之后只执行一次,因此它并不是机器密集型的.


Ada*_*ire 5

你绝对可以使用的int领域对于这一点,特别是因为MySQL提供的DATE_ADDDATE_SUB功能日期artihmetic使用时间整数单元旁边的日期和时间类型.

例如,如果您有一个datetime列eventDateTime并且您有一个持续时间列durationMinutes,则可以使用以下方法计算结束日期时间:

DATE_ADD(eventDateTime,INTERVAL durationMinutes MINUTE)
Run Code Online (Sandbox Code Playgroud)