mysql - 更改所有列 WHERE 数据类型

标签 mysql datetime alter-table

有没有办法更改数据库中具有特定数据类型的所有列?

我有一些列的数据类型是datetime(6),如果有的话我只希望它们是datatime ...没有6小数数字。是否可以在 MySql 中执行此操作而无需指定每一列?谢谢

最佳答案

您必须使用必要的语句创建文本字符串并将其保存在某个位置(我没有带有 datetime(6) 的列,但必须是这样的):

select 
concat('ALTER TABLE ',
        TABLE_SCHEMA,
        '.',
        table_name,
        ' CHANGE COLUMN ',
        Column_name,
        ' ',
        Column_name,
        ' DATETIME NULL DEFAULT NULL')
from
    INFORMATION_SCHEMA.COLUMNS
where
    table_schema = 'my_schema'
        and data_type = 'datetime'
    and character_maximum_length = 6 #may be numeric_precision, i don't know

使用exec语句后,如下所示:

PREPARE stmt1 FROM  'ALTER TABLE ....';
EXECUTE stmt1

关于mysql - 更改所有列 WHERE 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26784096/

相关文章:

asp.net - 为什么根据检索顺序从 ADO Recordset 中获取空值而不是正确值? (DB表有NTEXT值)

mysql - 处理从添加时间戳列到 mysql 表的尴尬

php - 将 ~1kk 字 rune 本保存到 MySQL

python - 如何有效地替换 pandas 列中日期时间值的时间部分?

mysql - 多个数据库中表之间的关系

c# - 在不同时区之间转换时间

Mysql更改列明细

php - 新添加的列在 phpMyAdmin 中不可见

python - 设置 SQLAlchemy PickleType 列大小

mysql - 异常配置流畅使用MySQL