【问题标题】:Saving 'DATETIME' as 'TIMESTAMP' in mysql database在mysql数据库中将'DATETIME'保存为'TIMESTAMP'
【发布时间】:2019-04-04 11:32:55
【问题描述】:

我有一个 Spring MVC 项目,它使用 LocalDateTime 变量并使用 MySQL 数据库。我希望将这些变量作为TIMESTAMP 保存在数据库中,我曾尝试使用LocalDateTimeAttributeConverter 类,但它只是将它们保存为DATETIME

如何在数据库中将DateTime 保存为Timestamp 类型?

【问题讨论】:

    标签: java mysql spring hibernate spring-mvc


    【解决方案1】:
            @Entity
            public class MyEntity
            {    
    
             // other properties
    
             @Column
             @Convert(converter = LocalDateTimeConverter.class)
             private LocalDateTime dateTime;
    
            }
    
    
           @Converter(autoApply = true)
    public class LocalDateTimeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
      @Override
      public Timestamp convertToDatabaseColumn(LocalDateTime localDateTime) {
        return Optional.ofNullable(localDateTime)
            .map(Timestamp::valueOf)
            .orElse(null);
      }
      @Override
      public LocalDateTime convertToEntityAttribute(Timestamp timestamp) {
        return Optional.ofNullable(timestamp)
            .map(Timestamp::toLocalDateTime)
            .orElse(null);
      }
    }
    

    【讨论】:

    • 我已经在使用该转换器,但它仍然只将 LocalDateTime 保存为 DATETIME 类型,我希望它在数据库中保存为 'TIMESTAMP'
    • 我试过了,它仍然作为 DateTime 保存到数据库中
    • 你为数据库中的列设置了什么数据类型
    • '@Column(name = "end", nullable = false) private LocalDateTime end; '这是我用过的
    • 请确保mysql表中的列数据类型设置为TIMESTAMP
    【解决方案2】:

    尝试如下使用。

    @Column(name="timestamp", columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP")

    【讨论】:

      【解决方案3】:

      尝试在属性上添加这个注解

      @Temporal(TemporalType.TIMESTAMP)
      

      【讨论】:

        猜你喜欢
        • 2016-10-19
        • 2011-09-16
        • 2014-03-23
        • 2019-04-21
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 2019-03-22
        • 2017-01-25
        相关资源
        最近更新 更多