Как хранить дату Java в Mysql datetime …?

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

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

2009-09-22 00:00:00 

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

 2009-09-22 08:08:11 

Я использую JPA (Hibernate) с весенними classами 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; 

см. в ссылке:

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, и он был успешным.

Аннотируйте свое поле (или getter) с помощью @Temporal(TemporalType.TIMESTAMP) , например:

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

Это должно делать свое дело.

Возможно, вы используете java.sql.Date ? Хотя это имеет миллисекундную гранулярность как class Java (это подclass java.util.Date , плохое дизайнерское решение), он будет интерпретироваться драйвером JDBC как дата без компонента времени. java.sql.Timestamp этого вы должны использовать 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; с  @JsonSerialize(using=JsonDateSerializer.class) @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss") private Date blkDate; 

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

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

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

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

меня устраивает !!

в таблице mysql

 DATETIME 

в организации:

 private Date startDate; 

в процессе:

 objectEntity.setStartDate(new Date()); 

в подготовленном заявлении:

 pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime())); 
  • Как восстановить таблицу InnoDB?
  • Нормализация в MYSQL
  • Внешний ключ MySQL для использования NULL?
  • Масштабирование решений для MySQL (репликация, кластеризация)
  • Будет ли запрос, который может занять часы для выполнения, будет выполняться на удаленном сервере, если я закрою соединение после выполнения команды?
  • Выбор данных между диапазоном даты / времени
  • Устранение ошибки «Недопустимое смешение коллажей» в mysql
  • mysql DECLARE WHILE вне хранимой процедуры как?
  • Как отображать символы UTF-8 в phpMyAdmin?
  • Разница между LIKE и = в MYSQL?
  • Изменить символ по умолчанию MySQL на UTF-8 в my.cnf?
  • Давайте будем гением компьютера.