Re[2]: Запись даты и времени в БД
От: nant Россия  
Дата: 28.10.03 14:00
Оценка: 4 (1)
Ошибка в коде. Нужно так.

//<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: Запись даты и времени в БД
От: Blazkowicz Россия  
Дата: 28.10.03 13:18
Оценка:
Здравствуйте, 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пасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.