【发布时间】:2018-06-16 14:17:03
【问题描述】:
我在我的 Customer 实体中使用下面来映射 Date 字段
@Temporal(TemporalType.DATE)
@Column(name = "birthdate")
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date birthDate;
但BirthDate 仍以yyyy-MM-dd 格式保存。我尝试使用 DateFormat 在字段 birthDate 的 setter 方法中设置,但仍然是相同的响应。
数据库是Mysql,列的类型是Date。
我希望将值设置为dd-MM-yyyy 格式。
【问题讨论】:
-
DateTimeFormat 与 JPA 无关。 @Temporal(TemporalType.DATE) 表示使用 java.sql.Date 存储和读取日期。它在数据库中的存储方式取决于数据库以及数据库列的类型。但是 DATE 类型没有任何格式。用于可视化日期的工具选择如何显示日期。
-
似乎是 XY 问题。为什么需要这样存储日期?
-
@JBNizet 我只是在想,当我只想要
dd-MM-yyyy并且甚至不想使用Date函数时,是否真的需要将其存储为日期。我可以简单地使用varchar类型吗? -
不,你真的不想这样。您甚至无法查询按时间排序的列表。更不用说无法查询两个日期之间的行等。使用正确的类型。日期就是日期。不是 varchar。
-
@JBNizet 有道理,所以转换是唯一的选择。
标签: mysql spring jpa date-formatting temporal