Как хранить дату 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) с 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;
Ответы
Ответ 1
см. в ссылке:
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, и он был успешным.
Ответ 2
Аннотировать ваше поле (или getter) с помощью @Temporal(TemporalType.TIMESTAMP)
, например:
public class MyEntity {
...
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date myDate;
...
}
Это должно сделать трюк.
Ответ 3
Возможно, вы используете java.sql.Date
? Хотя это имеет миллисекундную гранулярность как класс Java (это подкласс java.util.Date
, плохое дизайнерское решение), он будет интерпретироваться драйвером JDBC как дата без компонента времени. Вместо этого вы должны использовать java.sql.Timestamp
.
Ответ 4
Вероятно, потому что ваша дата 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));
Ответ 5
вы получите 2011-07-18 + формат времени
long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
Ответ 6
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);
Ответ 7
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
preparedStatement.setObject(param);
Ответ 8
Используйте следующий код, чтобы вставить дату в 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'),?,?,?,?,?)");
Ответ 9
На самом деле вы не можете использовать SimpleDateFormat, вы можете использовать что-то вроде этого:
@JsonSerialize(using=JsonDateSerializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
private Date blkDate;
Таким образом вы можете напрямую получить дату с указанным форматом.
Ответ 10
Его очень простые условия в этом ответе в mysql: тип данных столбца datetime, и вы хотите отправить данные из java-кода в mysql:
java.util.Date dt = new java.util.Date();
whatever your code object may be
.setDateTime(дт);
важная вещь - просто выбрать дату и ее формат уже в формате mysql и отправить его, никаких дополнительных изменений не требуется.
Ответ 11
Я все еще предпочитаю метод в одну строку
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())
Ответ 12
он работает для меня!
в таблице mysql
DATETIME
в объекте:
private Date startDate;
в процессе:
objectEntity.setStartDate(new Date());
в подготовленном заявлении:
pstm.setDate(9, new java.sql.Date(objEntity.getStartDate().getTime()));