【发布时间】:2013-11-24 01:06:19
【问题描述】:
我想通过更改“date_added”列的数据类型来升级我的数据库表
`date_added` datetime DEFAULT NULL
到
`new_date_added` bigint(20) NOT NULL
date_added 具有以“YYYY-MM-DD HH:MM:SS”格式存储的日期时间值。这个数据库表有超过 15000 行。执行此修改的最佳方法是什么?
注意:我已尝试执行以下 MySql 查询:
ALTER TABLE `my_table` ADD `new_date_added` bigint(20) NOT NULL AFTER `date_added`;
UPDATE `my_table` SET new_date_added = UNIX_TIMESTAMP( `date_added` );
ALTER TABLE `my_table` DROP `date_added`;
上述解决方案不会将日期时间值转换为正确的 unix_timestamp。如果我将修改后创建的 UNIX 时间戳与其原始日期时间值进行比较,则存在 19800 秒的差异。
【问题讨论】:
-
datetime 字段已在 mysql 内部存储为 unix 时间戳
-
19800 秒 = 5:30 小时。我敢打赌:你在印度(格林威治标准时间 + 5:30)
-
我应该在我的 sql 查询中进行哪些更改才能创建正确的时间戳值?
-
我在回答中添加了编辑