Re[2]: Запись даты и времени в БД
Ошибка в коде. Нужно так.
//<skipped/>
try {
ps.setTimestamp(1, new java.sql.Timestamp (date.getTime()));
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
//<skipped/>
Запись даты и времени в БД
От:
cadet354
Дата: 28.10.03 12:51
Оценка:
Доброго времени, тема избитая, но поиск результа не дал
Следующий код:
DateFormat d=new DateFormat();
String sDate = "28/10/2003 23:40:40" ;
String pattern = "dd/MM/yy HH:mm:ss" ;
Date date=null ;
SimpleDateFormat formatter;
formatter = new SimpleDateFormat(pattern);
try {
date = formatter.parse(sDate);
}catch ( ParseException e ){
e.printStackTrace();
}
try {
ps.setDate(1, new java.sql.Date (date.getTime()));
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("Done." );
}
}
записывает в MySQL 2003-10-28 00:00:00,а хотелось бы в виде 2003-10-28 23:40:40.
Как быть?
Re: Запись даты и времени в БД
От:
andrey
Дата: 28.10.03 13:05
Оценка:
Здравствуйте, cadet354.
Ну можно попробовать извратиться,:
....
public static String TimestampToSQLString(String s)
{
if (s == null || s.equalsIgnoreCase("null" ))
return "NULL" ;
Timestamp ts = new Timestamp(Long.parseLong(s));
String dateString = ts.toString();
dateString = dateString.substring(0,dateString.lastIndexOf("." ));
return "TO_DATE('" + dateString + "','YYYY-MM-DD HH24:MI:SS')" ;
}
....
Re: Запись даты и времени в БД
Здравствуйте, cadet354, Вы писали:
C>записывает в MySQL 2003-10-28 00:00:00,а хотелось бы в виде 2003-10-28 23:40:40.
C>Как быть?
Поcмотри у java.sql.Date методы setHours, setMinutes и т.д.
This method is deprecated and should not be used because SQL Date
values do not have a time component.
вывод: Использовать другие типы, либо трюки типа того что написал
andrey .
Re: Запись даты и времени в БД
От:
C0s
Дата: 28.10.03 13:49
Оценка:
Здравствуйте, cadet354, Вы писали:
C>Доброго времени, тема избитая, но поиск результа не дал
C>Следующий код:
C>C>DateFormat d=new DateFormat();
C>String sDate = "28/10/2003 23:40:40" ;
C>String pattern = "dd/MM/yy HH:mm:ss" ;
C>Date date=null ;
C>SimpleDateFormat formatter;
C>formatter = new SimpleDateFormat(pattern);
C>try {
C>date = formatter.parse(sDate);
C>}catch ( ParseException e ){
C>e.printStackTrace();
C>}
C>try {
C> ps.setDate(1, new java.sql.Date (date.getTime()));
C> ps.executeUpdate();
C>} catch (SQLException e) {
C> e.printStackTrace();
C>}
C>System.out.println("Done." );
C>}
C>}
C>
C>записывает в MySQL 2003-10-28 00:00:00,а хотелось бы в виде 2003-10-28 23:40:40.
C>Как быть?
все правильно делает приведенный код
java.sql.Date записывает только дату (без времени)
надо использовать java.sql.Timestamp — записывает даже наносекунды
в некоторых случаях бывает полезно рассмотреть вариант с сохранением в обычном numeric-поле БД значения someDate.getTime() (обычный long с миллисекундами)
Re[2]: Запись даты и времени в БД
От:
cadet354
Дата: 28.10.03 13:53
Оценка:
Здравствуйте, andrey, Вы писали:
A>Здравствуйте, cadet354.
A>Ну можно попробовать извратиться,:
A>A>....
A> public static String TimestampToSQLString(String s)
A> {
A> if (s == null || s.equalsIgnoreCase("null" ))
A> return "NULL" ;
A> Timestamp ts = new Timestamp(Long.parseLong(s));
A> String dateString = ts.toString();
A> dateString = dateString.substring(0,dateString.lastIndexOf("." ));
A> return "TO_DATE('" + dateString + "','YYYY-MM-DD HH24:MI:SS')" ;
A> }
A>....
A>
Спасибо за помощь, только вот не понятно в каком формате строку s пересылать?
Вываливается исключение на Timestamp ts = new Timestamp(Long.parseLong(s));(передаю например: 2003-10-28 16:50:00)
Re: Запись даты и времени в БД
От:
nant
Дата: 28.10.03 13:59
Оценка:
Здравствуйте, cadet354, Вы писали:
C>Доброго времени, тема избитая, но поиск результа не дал
А если использовать java.sql.Timestamp вместо java.sql.Date:
//<skipped/>
try {
ps.setDate(1, new java.sql.Timestamp (date.getTime()));
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
//<skipped/>
Тип колонки должен быть DATETIME или TIMESTAMP, но c TIMESTAMP отдельная песня — не все его варианты сохраняют время.
Re[3]: Запись даты и времени в БД
От:
cadet354
Дата: 28.10.03 14:41
Оценка:
Здравствуйте, nant, Вы писали:
N>Ошибка в коде. Нужно так.
N>N>//<skipped/>
N>try {
N> ps.setTimestamp(1, new java.sql.Timestamp (date.getTime()));
N> ps.executeUpdate();
N>} catch (SQLException e) {
N> e.printStackTrace();
N>}
N>//<skipped/>
N>
Огромное Cпасибо!
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить