Как мне установить полную дату и время sql, используя Java, а не только дату? - PullRequest
23 голосов
/ 09 сентября 2010

Я пытаюсь установить метку времени в своей базе данных, используя java, однако в моей таблице все, что я получаю, это дата, а не время (т. Е. Выглядит как «2010-09-09 00:00:00»).

Я использую поле datetime в моей базе данных mysql (потому что выглядит , что datetime встречается чаще, чем отметка времени ).Мой код для установки даты выглядит следующим образом:

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Date timestamp = new java.sql.Date(today.getTime());
ps.setDate(1, timestamp);
ps.executeUpdate();

Как мне установить дату, чтобы включить время?

Редактировать: Я изменил код в соответствии сниже, и он устанавливает дату и время.

PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable (datetime_field) VALUES (?)")
java.util.Date today = new java.util.Date();
java.sql.Timestamp timestamp = new java.sql.Timestamp(today.getTime());
ps.setTimestamp(1, timestamp);
ps.executeUpdate();

Ответы [ 3 ]

28 голосов
/ 09 сентября 2010

Используйте java.sql.Timestamp и setTimestamp(int, Timestamp).java.sql.Date только для даты, независимо от типа столбца, в котором она хранится.

4 голосов
/ 09 сентября 2010

Не совсем уверен, что вам нужно использовать, но

ps.setDate();

ожидает тип столбца Date.Так что это нормализует его, удаляя время.

Попробуйте

ps.setTimetamp();
0 голосов
/ 09 сентября 2010

Вы можете использовать:

private static String getTimeStamp() {
    SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return f.format(new Date()); 
}
...