【发布时间】:2014-07-22 14:12:22
【问题描述】:
我有一个纪元编号,例如 1389422614485。 存储此值的值的数据类型是 varchar。 我想将其值转换为人类可读的时间。 我们该怎么做? 这种转换有什么例子吗?
【问题讨论】:
-
需要注意,unix epoch 时间目前是一个 32 位整数,不能大于 2147483647。将其存储为 INT 也更有意义。
我有一个纪元编号,例如 1389422614485。 存储此值的值的数据类型是 varchar。 我想将其值转换为人类可读的时间。 我们该怎么做? 这种转换有什么例子吗?
【问题讨论】:
您的纪元值1389422614485 似乎具有毫秒精度。所以你需要使用一些mysql数学函数以及from_unixtime()来生成人类可读的格式。
mysql> select from_unixtime(floor(1389422614485/1000));
+------------------------------------------+
| from_unixtime(floor(1389422614485/1000)) |
+------------------------------------------+
| 2014-01-11 12:13:34 |
+------------------------------------------+
2020 年 7 月更新:从 MySQL 8.0 开始,处理毫秒时不再需要 floor 函数:
mysql> select from_unixtime(1594838230234/1000);
+------------------------------------------+
| from_unixtime(1594838230234/1000) |
+------------------------------------------+
| 2020-07-15 18:37:10.2340 |
+------------------------------------------+
【讨论】:
mysql> SELECT FROM_UNIXTIME(1196440219);
-> '2007-11-30 10:30:19'
【讨论】:
你可以使用 from_unixtime() 如下:
SELECT from_unixtime(1388618430);
返回 2014-01-02 00:20:30
【讨论】:
2014-01-01 23:20:30
这将适用于 +positive 和 -negative 纪元,以防旧出生日期,以及如果您想指定日期格式
select
date_format(DATE_ADD(from_unixtime(0), interval '1389422614485'/1000 second), '%Y-%m-%d %H:%i:%s') as my_new_date;
【讨论】: