【发布时间】:2016-07-20 16:20:19
【问题描述】:
我有一个使用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?
任何帮助,我将不胜感激,谢谢。
【问题讨论】:
-
因为它们是相同的值。
Date具有默认格式,但在内部是自纪元(1970 年 1 月 1 日)以来的毫秒数。2010-10-10是 10 月 10 日星期日。 -
在这种情况下,如果我作为参数传递
dataInserir,程序会将其理解为数据库中的2010-10-10? -
这可能是因为数据库中的数据类型不同,自动格式化为它的数据类型
-
如果您使用
System.print.out(formatter.format(dataInserir));打印输出,您将获得与jData.getText()相同的字符串值。 -
我相信在大多数数据库实现中,日期列与日期时间或时间戳列不同,它没有时间组件。由于您指定列的类型是 TemporalType.DATE,因此您暗示与数据关联的日期库列是日期列,因此只保存一个日期。如果您需要日期和时间信息,请考虑使用日期时间数据库列并将时间类型更改为 TemporalType.timestamp。
标签: java mysql date simpledateformat