MySQL 5.7文档似乎暗示数据类型为DATETIME(3)
的列将存储datetime值并将其格式化为恰好三毫秒。
文档中的相关示例:
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
上调用格式化函数。