我有一个使用SimpleDateFormat的代码
String data = jTData.getText();
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date dataInserir = null;
dataInserir = formatter.parse(data);
System.out.println(dataInserir);如果来自jTData.getText()的字符串是"2010-10-10“,则此代码的输出为:
Sun Oct 10 00:00:00 BRT 2010.但是,它在数据库中插入的值是2010-10-10。
此字段为:
@Temporal(javax.persistence.TemporalType.DATE)
private Date data;我错过了什么,我不能得到像2010-10-10这样的输出作为Date?如果输出是Sun Oct 10 00:00:00 BRT 2010,为什么要插入值2010-10-10?任何帮助我都会很感激的,谢谢。
发布于 2016-04-02 04:06:29
我怀疑您混淆了java.util.Date类和java.sql.Date的本质。第一个是日期和时间,第二个是仅日期。
您已将批注标记为javax.persistence.TemporalType.DATE。枚举文档说明很简单:
作为java.sql.Date的
映射
您说过只存储日期的。
所以你正在体验的是一个特性,而不是一个bug。
如果要存储带有日期时间的日期,请使用javax.persistence.TemporalType.TIMESTAMP注释。
在数据库中的列上使用timestamp类型(几乎总是timestamp- with -time-zone类型)。
此外,我建议使用java.time框架,而不要使用麻烦的java.util.Date和SimpleDateFormat类。但这完全是另一个话题。
https://stackoverflow.com/questions/36346512
复制相似问题