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.
我只需将它们存储在INT字段中,如秒或分钟(或者您正在使用的最低时间值).
例如,您希望存储以下时间值1小时34分25秒:
那是5665秒.因此,只需将值存储为INT字段中的5665即可
稍后,假设您要存储时间值56分7秒:
那是3367秒.
稍后总结一下:5665 + 3367 = 9032秒
将其转换回小时,分钟,秒,你得到2小时30分32秒.是的,你必须进行数学计算以进行转换,但这是一个非常简单的计算,并且由于你只是在存储INT之前或者在检索INT之后只执行一次,因此它并不是机器密集型的.
你绝对可以使用的int领域对于这一点,特别是因为MySQL提供的DATE_ADD和DATE_SUB功能日期artihmetic使用时间整数单元旁边的日期和时间类型.
例如,如果您有一个datetime列eventDateTime并且您有一个持续时间列durationMinutes,则可以使用以下方法计算结束日期时间:
DATE_ADD(eventDateTime,INTERVAL durationMinutes MINUTE)
Run Code Online (Sandbox Code Playgroud)