Как сохранить дату Java в Mysql datetime ...? - PullRequest
93 голосов
/ 08 марта 2010

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

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

2009-09-22 00:00:00

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

2009-09-22 08:08:11

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

Ответы [ 12 ]

151 голосов
/ 08 марта 2010

см. В ссылке:

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

84 голосов
/ 09 марта 2010

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

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

Это должно сработать.

37 голосов
/ 08 марта 2010

Возможно, вы используете java.sql.Date? Несмотря на то, что он имеет степень детализации в миллисекундах как класс Java (это подкласс java.util.Date, плохое проектное решение), драйвер JDBC будет интерпретировать его как дату без компонента времени. Вместо этого вы должны использовать java.sql.Timestamp.

7 голосов
/ 08 марта 2010

Возможно, потому что ваша дата в 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 голосов
/ 25 декабря 2012

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);
5 голосов
/ 08 марта 2011

вы получите 2011-07-18 + формат времени

long timeNow = Calendar.getInstance().getTimeInMillis();
java.sql.Timestamp ts = new java.sql.Timestamp(timeNow);
...
preparedStatement.setTimestamp(TIME_COL_INDEX, ts);
4 голосов
/ 11 июня 2013
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());    
preparedStatement.setObject(param);
1 голос
/ 12 марта 2014

Используйте следующий код для вставки даты в 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'),?,?,?,?,?)"); 
0 голосов
/ 14 июня 2019

Я до сих пор предпочитаю метод в одну строку

new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime())
0 голосов
/ 15 мая 2017

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

java.util.Date dt = новая java.util.Date ();
whatever your code object may be .setDateTime (дт);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...