【发布时间】:2017-08-07 18:04:14
【问题描述】:
我有一个timestamp 类型的现有数据库列,我需要将其修改为INT(11),但为了实现这一点,我需要在更改每个时间戳值时对其进行转换。
这是我目前无法正确转换时间戳的修改语句:
ALTER TABLE my_table
MODIFY COLUMN updated_on INT(11) UNSIGNED NOT NULL;
有没有办法为 alter 命令提供转换功能或其他东西?否则我认为我可以
- 创建一个新列,名为 updated_on_temp,类型为
INT(11) UNSIGNED NOT NULL - 转换和复制所有时间戳:
UPDATE my_table
SET updated_on_temp = UNIX_TIMESTAMP(updated_on);
- 删除
updated_on列 - 将
updated_on_temp重命名为updated_on
第二种方法是唯一有效的方法吗?
【问题讨论】:
-
为什么?将值 a) 转换为可按需访问的类型似乎相当愚蠢 b) 包含较少的信息 c) 不能在不转换回其原始类型的情况下进行操作