Как сохранить Java Date в Mysql datetime...?



может ли любое тело сказать мне, как я могу хранить Java Date в Mysql datetime...?



когда я пытаюсь это сделать...сохраняются только дата и время 00:00:00
в Mysql дата хранит вот так...



2009-09-22 00:00:00


Я хочу не только дата, но и время...как



2009-09-22 08:08:11


Я использую JPA (Hibernate) с классами spring mydomain использует java.утиль.Дата, но я создал таблицы с помощью рукописных запросов...



Это мой create заявление



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;
646   11  

11 ответов:

смотрите по ссылке:

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 вместо.

вероятно, потому что ваша дата 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));

вы получите 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'),?,?,?,?,?)"); 

на самом деле вы не можете использовать SimpleDateFormat, вы можете использовать что-то вроде этого;

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

таким образом, вы можете непосредственно получить дату с форматом, как указано.

его очень просто, хотя условия в этом ответе находятся в mysql тип данных столбца типа datetime и вы хотите отправить данные из java-кода в mysql:

java.утиль.Дата dt = новая java.утиль.Дата();
whatever your code object may be.setDateTime(dt);

важно просто выбрать дату, и ее формат уже соответствует формату mysql и отправить его, никаких дальнейших изменений не требуется.

это работает для меня !!

в таблице mysql

DATETIME

в сущности:

private Date startDate;

процесс:

objectEntity.setStartDate(new Date());

в preparedStatement:

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

Comments

    Ничего не найдено.