如何在MySQL的DATETIME中从毫秒中删除尾随零

时间:2018-04-17 09:29:31

标签: mysql

如何删除在MySQL中以更高精度的DATETIME发生的尾随零。

示例输入/输出:

2018-04-13 13:02:32.948000     =>    2018-04-13 13:02:32.948

2 个答案:

答案 0 :(得分:0)

基于MySQL-Doc,DATETIME字段应该有一个“fsp”参数。

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

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

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

但是不可能动态删除尾随零,你必须修复小数秒精度的长度。

来源:Fractional Seconds in Time Values

答案 1 :(得分:0)

如果直接输出DATETIME值毫秒,MySQL将删除尾随零。

CREATE TABLE test (
    colDateTime DATETIME(6)
);

INSERT INTO test VALUES ('2018-04-17 11:12:13.444000');

现在我们使用以下SELECT语句:

SELECT * FROM test; -- output: 2018-04-17T11:12:13.444Z (0 at the end are removed by MySQL).

最后得到零的唯一方法是使用DATE_FORMAT

SELECT DATE_FORMAT(colDateTime, '%f') FROM test; -- output: 444000

在这种情况下,您可以TRIM此字符串值的零:

SELECT TRIM(TRAILING '0' FROM DATE_FORMAT(colDateTime, '%Y-%m-%d %H:%i:%s.%f')) FROM test;
  

演示: http://sqlfiddle.com/#!9/b0655f/5/2