更改所有列WHERE数据类型

时间:2014-11-06 16:11:53

标签: mysql datetime alter-table

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

我有一些列,他们的数据类型是datetime(6),如果有的话,我只希望它们是datatime ...没有6个小数。这可以在MySql中完成,而不必指定每一列吗?感谢

1 个答案:

答案 0 :(得分:1)

您必须使用必要的语句创建文本字符串并将其保存在某个地方(我没有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