我有一个大约40,000行的整个mysql表,其中一列名为' epoch_time'并且它有一个纪元时间,我想转换整个表格的#epoch_time'等同于'日期'在一个单独的SQL查询中,我这样做是在php_my_admin中。提前谢谢。
答案 0 :(得分:1)
我猜你的epochtime是指UNIX风格的时间戳,即1970-01-01T00:00Z
以来的秒数。如果我的猜测是错误的,我的答案也是如此。
首先,在表格中添加一个新列。
ALTER TABLE mytable ADD COLUMN datestamp DATETIME AFTER epochtime;
这会将新列命名为datestamp
,并将其放在列表列中的epochtime
之后。
然后,您使用FROM_UNIXTIME()
更新整个表以使用旧表填充新列。省略WHERE
子句使更新在整个表上工作(小心!)。
UPDATE mytable SET datestamp = FROM_UNIXTIME(epochtime);
最后,如果您希望丢弃旧列。
UPDATE TABLE mytable DROP COLUMN epochtime;
如果我是你,我会在您的数据库副本上尝试所有这些,以确保它在您的生产数据库上执行之前是正确的。
如果您的纪元时间值已经具有TIMESTAMP
数据类型,则它们已在内部存储为UTC(f / k / a GMT)次。我建议的更新操作会根据服务器上的设置将它们转换为本地时间。
如果您的应用程序在多个时区中拥有用户,您可能希望继续使用TIMESTAMP
数据类型:它遵循时区设置。如果您的纪元时间存储在INT
列中,则可以使用TIMESTAMP
而不是DATETIME
类型创建新列,在上面的说明中将此行替换为第一行。< / p>
ALTER TABLE mytable ADD COLUMN datestamp TIMESTAMP AFTER epochtime;