【发布时间】:2019-03-09 07:15:14
【问题描述】:
salika 示例架构中的参与者表将 last_update 列定义为时间戳。我想使用 ISO8601 格式的 JSON_ARRAY 呈现该列。 - 首先不应该是 JSON_ARRAY 的默认渲染。
从阅读本网站和其他网站上的文档和 cmets 看来,答案似乎是使用 FROM_UNXTIME 和生成 ISO8601 格式的输出掩码。
不幸的是,FROM_UNIXTIME() 似乎总是在我的数据库上返回 NULL
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2018-10-03 17:15:03 |
+---------------------+
1 row in set (0.00 sec)
mysql> select from_unixTime(current_timestamp())
-> ;
+------------------------------------+
| from_unixTime(current_timestamp()) |
+------------------------------------+
| NULL |
+------------------------------------+
1 row in set (0.00 sec)
mysql>
我怀疑这可能是因为我没有安装时区配置文件。但是当我尝试时,我得到了......
mysql -u root -p****** sys <timezone_posix.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1146 (42S02) at line 1: Table 'sys.time_zone' doesn't exist
当然我在这里遗漏了一些明显的东西......
【问题讨论】:
-
好的,我修复了加载时区配置信息的问题,这个操作的目标数据库是'mysql',而不是'sys'。操作成功完成,但在停止重新启动服务后,我仍然遇到 from_unixtime() 返回 null 的问题..
-
好的,现在我让自己感到困惑... FROM_UNIXTIME(unix_timestamp()) 返回预期结果。但是 unix_timestamp() 自己会重新调整一个纪元值,这是有道理的,因为 FROM_UNIX 时间似乎需要一个纪元。如果我有时间戳类型的列,例如前面提到的 last_update 列,它似乎不能与 FROM_UNIXTIME 一起使用,