背景
我有一个包含大约 1600 万条记录的 MySQL 数据库。有 2 列created_at,updated_at目前已datetime格式化。
问题
我想UNIX Timestamp通过转换所有值并使用新值更新记录来更改此设置。
我知道如何在循环中使用 PHP 来执行此操作,但是有没有办法通过在 MySQL 中执行单个查询来执行此更新?
因为这将是一次性的改变;你可以这样继续:
使用数据类型创建新列INT并将其命名为created和updated。
ALTER TABLE `nameOfTable`
ADD COLUMN `created` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `created_at`,
ADD COLUMN `updated` INT UNSIGNED NOT NULL DEFAULT '0' AFTER `updated_at`;
Run Code Online (Sandbox Code Playgroud)更新表:
UPDATE `nameOfTable`
SET `created` = UNIX_TIMESTAMP( `created_at` ),
`updated` = UNIX_TIMESTAMP( `updated_at` );
Run Code Online (Sandbox Code Playgroud)created_at和updated_at。替代方式:
DATETIME列设置为VARCHAR字段。使用查询更新:
UPDATE `nameOfTable`
SET `created_at` = UNIX_TIMESTAMP( `created_at` ),
`updated_at` = UNIX_TIMESTAMP( `updated_at` );
Run Code Online (Sandbox Code Playgroud)INT.