将多个epoch时间转换为sql中的日期

vatpfxk5  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(630)

我有一个完整的mysql表,大约40000行,列名为“epoch\u time”,其中有epoch time,我想把整个表的“epoch\u time”转换成一个等效的“date”,在一个sql查询中,我是在php\u my\u admin中完成的。提前谢谢。

szqfcxe2

szqfcxe21#

我猜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;

相关问题