Как сохранить 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;
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