我正在使用phpmyadmin / MySQL创建数据库。
这是飞机/公共汽车/火车预订系统。
我有一个'depart_time'属性,它是一种时间数据类型。在同一个表中,我有一个'duration'属性。稍后我将需要对此持续时间属性进行乘法运算(取决于它是否是火车/公共汽车/飞机)。
我的问题是 - 此持续时间属性的最佳数据类型是什么?
我考虑过使用十进制类型 - 但是它中的值并不能准确地表示时间(例如1.30不代表1个半小时,它需要是1.50 - 如果这是有意义的话)。 我也想过为这个字段使用时间数据类型,但是我不确定是否可以进行乘法?
在谷歌上搜索时间数据类型的乘法后,我找不到任何帮助。
希望这是有道理的,如果您需要更多信息,请随时在评论中提问!
提前致谢!
答案 0 :(得分:1)
可以使用 ISO 8601 持续时间格式以开放标准方式表示持续时间。
答案 1 :(得分:0)
如果我处于那个位置,我可能会:
P1D
字符串中保留1天,P1W2DT3H
保留1周,2天,3小时。这是许多图书馆使用的标准格式,可以更好地处理真正需要1天的情况,但这是闰日的一天。对于大多数情况,只使用秒钟就可以了。
答案 2 :(得分:0)
使用int
并以您感兴趣的最小单位记录持续时间。例如,如果您需要精确度,请将一个半小时存储为90分钟。为显示目的格式化该值是表示逻辑,而不是数据库的业务。
答案 3 :(得分:0)
我会在数据库中将其表示为秒或分钟(您想要的最低精度)。向用户显示它应该在前端动态完成(例如在几分钟(1分钟,30分钟180分钟),小时(0.1小时,1小时,3小时,3.0小时),天(0.5天,1天)或最小包装(1天5小时) 42min)。
你应该将它分开。所以我建议使用秒。
答案 4 :(得分:0)
我已经解决了我将如何做到这一点。
而不是在数据库中进行。我将使用Python进行乘法运算。
我从表中获取信息,将数据转换为int / datetime.deltatime并且乘法工作。
然后我只需要根据它的公共汽车/火车/飞机返回那些数据。
答案 5 :(得分:0)
对于不涉及金钱的乘数,只需使用FLOAT
。
然后在几秒钟内工作(如果您愿意,则为几分钟)。这可以在INT UNSIGNED
。
使用适当的DATETIME
函数将秒数转换为hh:mm
或您想要的任何输出。注意:内部格式不必与显示格式相同。