我目前在美国东部时间将所有DATETIME
字段存储在我的数据库中,并且希望UPDATE
将它们全部转换为UTC。我在很多不同的表中有很多DATETIME
个字段。有没有办法一次识别和UPDATE
所有这些?
答案 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客户端并执行它们。当然,可以为结果创建预处理语句并执行它们。