如何将Java Date存储到Mysql datetime ......?

Urv*_*ish 97 java mysql datetime jpa

任何机构都可以告诉我如何将Java Date存储到Mysql datetime ......?

当我尝试这样做时...只存储日期,并且在这样的Mysql日期存储中时间保持00:00:00 ......

2009-09-22 00:00:00
Run Code Online (Sandbox Code Playgroud)

我不仅想要约会,还想要时间......就像

2009-09-22 08:08:11
Run Code Online (Sandbox Code Playgroud)

我正在使用JPA(Hibernate)和spring mydomain类使用java.util.Date但我使用手写查询创建了表...

这是我的创建声明

CREATE TABLE ContactUs (id BIGINT auto_increment, 
                        userName VARCHAR(30), 
                        email VARCHAR(50), 
                        subject VARCHAR(100), 
                        message VARCHAR(1024), 
                        messageType VARCHAR(15), 
                        contactUsTime datetime, 
                        primary key(id))
                        TYPE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

Hai*_*vgi 158

在链接中看到:

http://www.coderanch.com/t/304851/JDBC/java/Java-date-MySQL-date-conversion

以下代码刚刚解决了这个问题:

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = 
     new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);
Run Code Online (Sandbox Code Playgroud)

这个' currentTime '被插入到类型为DateTime的列中,并且成功了.

  • 但是,currentTime是一个String对象,在db中我们将datetime作为数据类型,我认为它不会被insert.right? (3认同)

Pas*_*ent 87

用这样的方法注释你的字段(或getter)@Temporal(TemporalType.TIMESTAMP):

public class MyEntity {
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date myDate;
    ...
}
Run Code Online (Sandbox Code Playgroud)

这应该够了吧.

  • 这是正确的答案.应该有更多的选票! (9认同)
  • 请注意,如果选择此解决方案,则从db获取时,您的日期将显示为时间戳.它不会有很好的格式'yyyy-MM-dd ....') (3认同)
  • 这确实是答案! (2认同)
  • 为此,这是正确的答案. (2认同)

Mic*_*rdt 37

你也许正在使用java.sql.Date?虽然它具有作为Java类的毫秒粒度(它是java.util.Date糟糕的设计决策的子类),但它将被JDBC驱动程序解释为没有时间组件的日期.你必须java.sql.Timestamp改用.

  • 为"你必须使用java.sql.Timestamp"+1 (4认同)

Mar*_*rcx 7

可能是因为你的java日期与mysql format(YYYY-MM-DD HH:MM:SS)的格式不同

做这个

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
 Date date = new Date();
 System.out.println(dateFormat.format(date));
Run Code Online (Sandbox Code Playgroud)


小智 5

你会得到2011-07-18 +时间格式

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
Run Code Online (Sandbox Code Playgroud)


Nik*_*pol 5

mysql datetime - > GregorianCalendar

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = format.parse("2012-12-13 14:54:30"); // mysql datetime format
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
System.out.println(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)

GregorianCalendar - > mysql datetime

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = format.format(calendar.getTime());
System.out.println(string);
Run Code Online (Sandbox Code Playgroud)