我有一个my sql表,大约有40000行,列名为epoch_time,其中有epoch time,我想在一个sql查询中将整个表的epoch_time转换为一个等效的date,我在php我的管理员中完成这项工作。提前谢谢。
最佳答案
我想您所说的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;
如果我是你,我会在你的数据库副本上尝试所有这些,以确保它是正确的,然后再在你的生产数据库上进行。
如果您的EpochTime值已经具有
TIMESTAMP
数据类型,则它们已经在内部存储为UTC(F/K/A GMT)时间。我建议的更新操作将根据服务器上的设置将它们转换为本地时间。如果您的应用程序有多个时区的用户,您可能希望继续使用
TIMESTAMP
数据类型:它尊重时区设置。如果您的纪元时间存储在INT
列中,则可以使用TIMESTAMP
而不是DATETIME
类型创建新列,方法是将这一行替换为上面说明中的第一行。 ALTER TABLE mytable ADD COLUMN datestamp TIMESTAMP AFTER epochtime;