将sql中的多个纪元时间转换为

时间:2018-06-17 09:34:58

标签: mysql sql database datetime timestamp

我有一个大约40,000行的整个mysql表,其中一列名为' epoch_time'并且它有一个纪元时间,我想转换整个表格的#epoch_time'等同于'日期'在一个单独的SQL查询中,我这样做是在php_my_admin中。提前谢谢。

1 个答案:

答案 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;