IT

Java Date를 Mysql datetime에 저장하는 방법…?

lottoking 2020. 8. 24. 20:37
반응형

Java Date를 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 formatYYYY-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);

다음 코드를 사용하여 MySQL에 날짜를 삽입하십시오. MySql의 요구 사항을 수용하기 위해 날짜 형식을 변경하는 대신에 STR_TO_DATE(?, '%l:%i %p')대신 변수 를 설정하여 데이터베이스가 날짜를 인식하도록 도울 수 있습니다 .

예를 들어 2014-03-12는 다음과 같이 수 있습니다. STR_TO_DATE('2014-03-12', '%Y-%m-%d')

preparedStatement = connect.prepareStatement("INSERT INTO test.msft VALUES (default, STR_TO_DATE( ?, '%m/%d/%Y'), STR_TO_DATE(?, '%l:%i %p'),?,?,?,?,?)"); 

이 답변의 조건은 mysql에 있지만 열 데이터 유형은 datetime 이며 Java 코드에서 mysql로 ​​데이터를 보내고 싶습니다.

java.util.Date dt = 새로운 java.util.Date ();
whatever your code object may be.setDateTime (dt);

중요한 것은 날짜를 선택하고 형식은 이미 mysql 형식에 따라 전송되며 추가 수정이 필요하지 않습니다.


실제로 SimpleDateFormat을 사용하지 않을 수도 있습니다. 다음과 같이 사용할 수 있습니다.

  @JsonSerialize(using=JsonDateSerializer.class)
  @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
  private Date blkDate;

이렇게하면 지정된 형식으로 날짜를 직접 가져올 수 있습니다.


나는 여전히 한 줄의 방법을 선호합니다.

new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())

그것은 나를 위해 작동합니다!

mysql 테이블에서

DATETIME

엔티티에서 :

private Date startDate;

과정에서:

objectEntity.setStartDate(new Date());

readyStatement에서 :

pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));

참고 URL : https://stackoverflow.com/questions/2400955/how-to-store-java-date-to-mysql-datetime

반응형