我应该使用哪种数据类型来表示“持续时间”属性?

4

我正在使用phpmyadmin / MySQL制作数据库。

这是用于飞机/公交车/火车预订系统。

我有一个'depart_time'属性,它是时间数据类型。在同一张表中,我有一个'duration'属性。以后,根据列车/公共汽车/飞机的不同,我将需要对此持续时间属性进行乘法运算。

我的问题是 - 最适合此持续时间属性的数据类型是什么?

我考虑过使用十进制类型 - 但是那样里面的值不会准确表示时间(例如1.30不会表示1个半小时,需要为1.50 - 如果这有意义的话)。 我还考虑了在该字段上使用时间数据类型,但我不确定是否可以对其进行乘法运算?

我无法在Google上找到关于时间数据类型的乘法运算的帮助。

希望这有意义,如果您需要更多信息,请随时在评论中提出!

提前致谢!


1
持续时间值将与什么相乘? - Muhammad Usman
https://dev.mysql.com/doc/refman/5.7/en/time.html - Darshan Mehta
@UsmanRana 数字如2、3、4等。 - Alex Lord
6个回答

5

使用一个int来记录你感兴趣的最小单位的时间长度,例如,如果你需要分钟级别的精度,则将一小时半存储为90分钟。将该值格式化为显示目的是展示逻辑,而不是数据库的业务。


0

如果我处于那个位置,我可能会选择以下之一:

  1. 以秒为单位。不太可能需要更高的精度。
  2. 使用字符串,例如P1D表示1天,P1W2DT3H表示1周2天3小时。这是许多库使用的标准格式,并且在某些情况下处理得更好,例如一个持续1天但有一个闰时的日子。

对于大多数情况,仅使用秒就足够了。


0

我会在数据库中将其表示为秒或分钟(您想要的最小精度)。在前端动态显示给用户时应该以分钟(1分钟,30分钟,180分钟),小时(0.1小时,1小时,3小时,3.0小时),天数(0.5天,1天)或最小包装形式(1天5小时42分钟)等方式进行。

您应该保持这种分离。因此,我建议使用秒。


0

我已经解决了如何做到这一点。

不是在数据库中完成,而是使用Python进行乘法运算。

我从表格中获取了信息,将数据转换为int/datetime.deltatime,然后进行了乘法运算。

然后,我只需要根据是公交车/火车/飞机返回该数据即可。


0

对于与货币无关的乘数,只需使用 FLOAT

然后以秒为单位工作(如果您喜欢,也可以使用分钟)。这可以使用 INT UNSIGNED

使用适当的 DATETIME 函数将秒转换为所需的 hh:mm 或其他输出格式。注意:内部格式不必与显示格式相同。


0

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