我应该为'duration'属性使用什么数据类型?

时间:2017-01-29 19:56:06

标签: mysql database phpmyadmin sqldatatypes

我正在使用phpmyadmin / MySQL创建数据库。

这是飞机/公共汽车/火车预订系统。

我有一个'depart_time'属性,它是一种时间数据类型。在同一个表中,我有一个'duration'属性。稍后我将需要对此持续时间属性进行乘法运算(取决于它是否是火车/公共汽车/飞机)。

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

我考虑过使用十进制类型 - 但是它中的值并不能准确地表示时间(例如1.30不代表1个半小时,它需要是1.50 - 如果这是有意义的话)。 我也想过为这个字段使用时间数据类型,但是我不确定是否可以进行乘法?

在谷歌上搜索时间数据类型的乘法后,我找不到任何帮助。

希望这是有道理的,如果您需要更多信息,请随时在评论中提问!

提前致谢!

6 个答案:

答案 0 :(得分:1)

可以使用 ISO 8601 持续时间格式以开放标准方式表示持续时间。

https://www.digi.com/resources/documentation/digidocs/90001437-13/reference/r_iso_8601_duration_format.htm

答案 1 :(得分:0)

如果我处于那个位置,我可能会:

  1. 几秒钟。不太可能你需要更高的精度。
  2. P1D字符串中保留1天,P1W2DT3H保留1周,2天,3小时。这是许多图书馆使用的标准格式,可以更好地处理真正需要1天的情况,但这是闰日的一天。
  3. 对于大多数情况,只使用秒钟就可以了。

答案 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或您想要的任何输出。注意:内部格式不必与显示格式相同。