【问题标题】:Changing datatype from int to time causing error in existing value将数据类型从 int 更改为 time 导致现有值出错
【发布时间】:2019-04-03 18:49:18
【问题描述】:

我有一个新项目,其中时间信息存储为数据类型 int

现在,我需要两个信息(小时和分钟)

经过一些研究,我发现数据类型 time 可以很好地在列中存储小时和分钟信息。

当我们将现有数据类型从 int(假设值为 8)更改为类型 time 时,现有值更改为 00:00:08

问题更改数据类型后,数据类型时间变为秒数

有人可以指导我如何正确地将它从 int 映射到 time?

表结构

before
    Name    Type
    hours   int

after
    Name    Type
    hours   time

实际结果

00:00:08

预期结果

08:00:00

【问题讨论】:

  • 你不需要第二个值

标签: mysql sql time


【解决方案1】:

创建一个临时列作为TIME 数据类型并使用此查询:

UPDATE t
SET hours_temp = SEC_TO_TIME(hours * 60 * 60)

当您对结果感到满意时,删除原始列并重命名临时列。


如果您已经弄乱了数据,请改用它:

UPDATE t
SET hours_temp = SEC_TO_TIME(EXTRACT(second FROM hours) * 60 * 60)

【讨论】:

  • 假设列数据类型已经改变,我认为UPDATE t SET hours = SEC_TO_TIME(TIME_TO_SEC(hours) * 60 * 60) 也可能有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2013-08-31
  • 2023-01-28
  • 1970-01-01
  • 2021-03-04
  • 2020-12-31
相关资源
最近更新 更多