将java util date存储到mysql中作为时间戳

时间:2013-06-20 14:10:35

标签: java date simpledateformat

我正在使用JPA和MySQl

在我的域对象中,我有一个日期字段为

@Temporal(TemporalType.TIMESTAMP)
private Date lastSeenDate;

从我的UI中,日期以dd-mm-yyyy

格式的字符串形式出现

我用过

final DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
final Date date = format.parse(dateString);

但是对于字符串日期

  

2013年6月6日

存储在mysql中的日期是

  

0011-12-04 00:00:00.0

如何将其存储到mysql中以匹配mysql格式

3 个答案:

答案 0 :(得分:1)

  

类Date表示特定的时刻,以毫秒为单位   精度。

来自:http://docs.oracle.com/javase/6/docs/api/java/util/Date.html

日期类始终具有时间组件。

答案 1 :(得分:0)

Java中的所有日期基本上都是时间戳,因为它们代表了一毫秒的时间。

我无法想象只处理日期,但您可能想看看java.util.Calendar。如果您可以将小时,分钟,秒和毫秒全部设置为零(或其他定义的时间),则可以更自然地使用数天,数月和数年。这不是一个很好的产品,但它运作良好。

答案 2 :(得分:0)

根据JavaDocs: java.util.Date 分配一个Date对象并初始化它,以便它表示分配它的时间,测量到最近的毫秒。

因此,它的工作方式类似于数据库时间戳。它总是会有一个时间组件,尽管它可能都是代表午夜的零。但是,您可以使用相同的SimpleDateFormat打印java.util.Date而不使用其时间组件。

final DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
final Date utilDate = sdf.parse("2013-06-20");
System.out.println(sdf.format(utilDate)); // prints back 2013-06-20

或者,您可能希望查看没有时间组件的java.sql.Date

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());