更新数据库中的所有DATETIME字段

时间:2014-09-06 15:03:46

标签: mysql

我目前在美国东部时间将所有DATETIME字段存储在我的数据库中,并且希望UPDATE将它们全部转换为UTC。我在很多不同的表中有很多DATETIME个字段。有没有办法一次识别和UPDATE所有这些?

1 个答案:

答案 0 :(得分:1)

您可以使用以下语句生成所需的UPDATE语句:

SET @tzdiff = 5;    -- difference between EST and UTC
SET @db = 'test4';  -- your DB name
SELECT
    CONCAT(
        'UPDATE ',
        '`', c.TABLE_NAME, '` ', 
        'SET ', 
        '`', COLUMN_NAME, '` = ',
        '`', COLUMN_NAME, '` + INTERVAL ', @tzdiff, ' HOUR;' 
    ) as update_statement
FROM
    INFORMATION_SCHEMA.COLUMNS c
WHERE
    c.TABLE_SCHEMA = @db
AND
    c.`DATA_TYPE` LIKE 'datetime';

我的数据库&test;'

的结果
update_statement
-----------------------------------------------------------------------
UPDATE `example12` SET `column_name` = `column_name` + INTERVAL 5 HOUR;
UPDATE `post` SET `expiration` = `expiration` + INTERVAL 5 HOUR;

对于一次性工作,我只需将结果复制到您选择的MySQL客户端并执行它们。当然,可以为结果创建预处理语句并执行它们。