【问题标题】:How to create a mysql table that stores time (hours and minutes)?如何创建一个存储时间(小时和分钟)的mysql表?
【发布时间】:2015-11-09 13:43:31
【问题描述】:

我想创建一个存储时间(小时和分钟)的mysql表,例如456:45(456小时和45分钟)

创建表 mytable(id VARCHAR(40) NOT NULL, my_time DATE NOT NULL);

应该使用哪种数据类型?

【问题讨论】:

标签: mysql sql


【解决方案1】:

TIME - 以 HH:MM:SS 显示值

范围是“-838:59:59”到“838:59:59”。

您可以使用字符串或数字为时间列赋值。

【讨论】:

    【解决方案2】:

    如果TIME datatype range 对你来说足够了,那就去吧。它以比您可能需要的更高的精度存储信息,并且有一些怪癖:

    out-of-range TIME values are clipped to the appropriate endpoint of the TIME range.
    

    否则,如果您只需要几分钟,您可以使用 DECIMAL 数据类型。您有两种可用的方法:

    1. 小数是分钟。因此,1200 小时 30 分钟就是 1200.30。

    优点:你有两位数的全精度,并且可以通过截断立即读取分钟。

    缺点:0.30 + 0.30 应该是 1.00,而不是 0.60。此外,“27:00 前一分钟”将是 26.99,而不是 26.59。

    1. 标准化为小时。也就是说,“1200.5”表示 1200 小时半,即 1200h 30'。

    优点:计算变得非常简单。

    缺点:不能立即查看 17.25 并将其解释为 17 小时 15 分钟。您需要得到小数部分并乘以 0.60。此外,要获得可接受的精度,您需要多于两位小数(3 或 4,具体取决于转换技术)。

    另一种可能性是做 MySQL 所做的事情(尽管在微秒级别)并使用 INTEGER 字段来存储分钟。那么 1200 小时 30 分钟将由整数 72030 表示。除以 60 得到小时,模 60 得到分钟。

    【讨论】:

      【解决方案3】:

      1) 创建VARCHAR 列,并在保存数据时使用分隔符,例如:-

      456:45,456_45,456-45
      

      2) 其他更好的选择是convert time in second 或创建Int 列并在seconds 中节省时间

      【讨论】:

      • 如果像 456:45 这样的时间......没有更多的选择了:(@c4pricorn
      【解决方案4】:

      应该使用的数据类型是:

      DATETIME
      

      或者看看这个:

      http://www.w3schools.com/sql/sql_dates.asp
      

      希望这会有所帮助,

      苏海尔。

      【讨论】:

      • 我不认为你可以,因为 DATETIME 的目的是以这种格式显示:YYYY-MM-DD HH:MI:SS。
      • @Rahautos 不必激动,我只是想帮忙。赫兹。
      • 他只是指出你的回答与问题无关。
      • 虽然没有办法以 HHH:MM 格式存储时间。
      • 即使使用 TIME 数据类型.. 您也只能以 HH:MM:SS 格式存储时间。
      猜你喜欢
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-20
      • 1970-01-01
      • 2010-12-30
      • 2017-10-28
      相关资源
      最近更新 更多