我有一个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;

10-05 20:54
查看更多