使MySQL 5.7显示毫秒而不是微秒

时间:2019-01-21 18:16:08

标签: mysql

MySQL 5.7文档似乎暗示数据类型为DATETIME(3)的列将存储datetime值并将其格式化为恰好三毫秒。

Link to docs

文档中的相关示例:

mysql> CREATE TABLE fractest( c1 TIME(2), c2 DATETIME(2), c3 TIMESTAMP(2) );

mysql> INSERT INTO fractest VALUES
('17:51:04.777', '2018-09-08 17:51:04.777', '2018-09-08 17:51:04.777');

mysql> SELECT * FROM fractest;
+-------------+------------------------+------------------------+
| c1          | c2                     | c3                     |
+-------------+------------------------+------------------------+
| 17:51:04.78 | 2018-09-08 17:51:04.78 | 2018-09-08 17:51:04.78 |
+-------------+------------------------+------------------------+

在该示例中,c2舍入并精确显示.78秒。

当我尝试对DATETIME(3)列执行相同的操作时,MySQL会正确地截断至小数点后三位,但仍会格式化为六位。因此,最后三个位置始终为零,但其格式设置为显示微秒的位置。

+----------------------------+
| timestamp                  |
+----------------------------+
| 2018-04-12 14:08:19.296000 |
| 2018-04-13 14:08:22.312000 |
| 2018-04-14 14:08:25.914000 |
+----------------------------+

如何从MySQL文档复制行为?如果该字段为DATETIME(3),我希望它仅显示到第二小数位:

+-------------------------+
| timestamp               |
+-------------------------+
| 2018-04-12 14:08:19.296 |
| 2018-04-13 14:08:22.312 |
| 2018-04-14 14:08:25.914 |
+-------------------------+

我也希望将其作为默认行为,而不是每次选择时都必须在timestamp上调用格式化函数。

1 个答案:

答案 0 :(得分:1)

这是使用mycli MySQL命令行工具的副作用。使用标准mysql时不会发生。