You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中DATETIME(6)里的数字6代表什么含义?

Hibernate自动将DATETIME转为DATETIME(6)的原因及解决办法
  • 这是Hibernate自身的默认映射规则,和MySQL原生行为无关:Hibernate针对MySQL的方言(如MySQL8Dialect),默认会把Java中的日期时间类型(例如LocalDateTime、Date)映射为MySQL的DATETIME(6)类型,即保留6位微秒精度的日期时间。
  • 若要保持不带精度的DATETIME,可以通过以下方式调整:
    1. 字段级强制指定:在实体类的对应日期字段上添加@Column(columnDefinition = "DATETIME")注解,直接指定数据库字段类型,覆盖Hibernate的默认映射。
    2. 全局方言自定义:继承现有MySQL方言类,重写日期时间类型的注册逻辑,修改默认精度配置。示例代码如下:
      public class CustomMySQL8Dialect extends MySQL8Dialect {
          public CustomMySQL8Dialect() {
              super();
              registerColumnType(TIMESTAMP, "DATETIME");
              registerColumnType(DATE, "DATE");
              registerColumnType(TIME, "TIME");
          }
      }
      
      之后在Hibernate配置文件中指定使用该自定义方言:hibernate.dialect=你的包路径.CustomMySQL8Dialect

内容的提问来源于stack exchange,提问作者Archimedes Trajano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 20:12:09