[java] JPA를 사용하여 Java 날짜를 Mysql datetime에 저장하는 방법

어떤 시체가 Java Date를 Mysql datetime에 어떻게 저장할 수 있는지 말해 줄 수 있습니까?

내가 그렇게하려고 할 때 … 날짜 만 저장되고 시간은 다음과 같이 Mysql 날짜 저장소에 00:00:00으로 유지됩니다 …

2009-09-22 00:00:00

데이트뿐 아니라 시간도 원해 …

2009-09-22 08:08:11

Spring mydomain 클래스와 함께 JPA (Hibernate)를 사용하고 있지만 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;



답변

링크에서 참조하십시오.

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);

이 ‘ currentTime ‘은 유형이 DateTime이고 성공한 열에 삽입되었습니다.


답변

다음과 같이 필드 (또는 게터)에 주석을 추가합니다 @Temporal(TemporalType.TIMESTAMP).

public class MyEntity {
    ...
    @Temporal(TemporalType.TIMESTAMP)
    private java.util.Date myDate;
    ...
}

그게 트릭을해야합니다.


답변

아마도 사용하고 java.sql.Date있습니까? Java 클래스 (의 하위 클래스 java.util.Date, 잘못된 설계 결정) 로 밀리 초 단위로 세분화되지만 JDBC 드라이버는 시간 구성 요소가없는 날짜로 해석됩니다. java.sql.Timestamp대신 사용해야 합니다.


답변

아마도 자바 날짜가 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));


답변

2011-07-18 + 시간 형식이 표시됩니다.

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);


답변

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());

GregorianCalendar-> mysql datetime

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


답변

java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
preparedStatement.setObject(param);