将数据类型从int更改为time会导致现有值出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将数据类型从int更改为time会导致现有值出错相关的知识,希望对你有一定的参考价值。

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

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

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

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

问题更改数据类型的小时数在数据类型时间内转移到秒

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

表结构

before
    Name    Type
    hours   int

after
    Name    Type
    hours   time

实际结果

00:00:08

预期结果

08:00:00
答案

创建一个临时列作为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)

以上是关于将数据类型从int更改为time会导致现有值出错的主要内容,如果未能解决你的问题,请参考以下文章

将主键 int 类型更改为串行

ASP.NET Identity - 将用户 ID 主键默认类型从字符串更改为 int 以及使用自定义表名时出错

将现有 MySQL 列更改为 JSON 数据类型

将现有 SQL Server 2005 数据库中的数据类型 varchar 更改为 nvarchar。有啥问题吗?

从 varchar 更改为 mediumtext 会导致性能下降

将带有数字的列的类型从 varchar 更改为 int