代码之家  ›  专栏  ›  技术社区  ›  Fabricio Rodriguez

MySql Server 5.7在DATETIME(3)列上没有节省毫秒

  •  0
  • Fabricio Rodriguez  · 技术社区  · 5 年前

    我在Armbian Bionic(Ubuntu 18.04.4)上运行MySQL服务器,在Orange Pi Zero上运行。MySQL服务器版本为5.7.29。

    我创建了一个表,数据类型为 DATETIME(3) 也就是说,我想以毫秒精度存储日期和时间。

    当我执行 INSERT INTO table1 (column1) VALUES ('2020-02-04 12:34:46.789'); 然后我执行 SELECT column1 FROM table1; 它显示:

    2020-02-04 12:34:47

    所以看起来它并没有节省毫秒?但如果我执行 SELECT NOW(3); 它显示:

    2020-02-04 20:25:33.077

    所以它处理毫秒。有什么想法吗?

    0 回复  |  直到 5 年前
        1
  •  4
  •   Sebastian Brosch Navjyot    5 年前

    看起来您的列正在使用默认值 DATETIME 。您可以使用以下查询查看当前表架构:

    DESC table_name
    

    请确保您使用以下内容创建了表 DATETIME(3) :

    CREATE TABLE table_name (
      column_name DATETIME(3)
    )
    

    您可以确保输出使用精度。但是,如果值存储在 日期时间(3) 列:

    SELECT CAST(column_name AS DATETIME(3)) FROM table_name
    

    demo on dbfiddle.uk

        2
  •  0
  •   Fabricio Rodriguez    5 年前

    我无法解释。尽管我创建了这个专栏 日期时间(3) ,甚至在执行之后 DESC table1 并获得回复 日期时间(3) 出于绝望,我尝试使用MySqlWorkbench之外的另一个数据库客户端。我下载了 B屋檐 ,并编辑了表格。我看到column1被设置为DATETIME(尽管Workbench将其显示为DATETIME(3))。所以我把它做成了DATETIME(3),现在它奏效了!因此,这一定是Workbench中的一个错误,在创建或编辑DATETIME列时,它忽略了小数秒说明符。