powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Timestamp
21 сообщений из 21, страница 1 из 1
Timestamp
    #32846651
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как запихнуть значение указанного типа в строку sql запроса, понятную ораклу с использованием функции TO_DATE? Спасибо
...
Рейтинг: 0 / 0
Timestamp
    #32846659
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
РусКак запихнуть значение указанного типа в строку sql запроса, понятную ораклу с использованием функции TO_DATE? Спасибо
не знаю ничего насчет оракла. денис попов ответит :)

но общий вариант примерно такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
String qry = "insert into mytable (mdate) values(?)";
PreparedStatement st = con.prepareStatement(qry);
Timestamp t = ...;
st.setTimestamp( 1 , t);
st.executeUpdate();
...
...
Рейтинг: 0 / 0
Timestamp
    #32847255
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
А.Грасоff™ РусКак запихнуть значение указанного типа в строку sql запроса, понятную ораклу с использованием функции TO_DATE? Спасибо
не знаю ничего насчет оракла. денис попов ответит :)

но общий вариант примерно такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
...
String qry = "insert into mytable (mdate) values(?)";
PreparedStatement st = con.prepareStatement(qry);
Timestamp t = ...;
st.setTimestamp( 1 , t);
st.executeUpdate();
...


тоже самое, советую делать именно через to_date, вместо timestamp(не совсем коректно работает, может не включать именно Эту секунду). а при селекте timestamp рулит.
Код: plaintext
1.
2.
3.
4.
5.
6.
...
String qry = "insert into mytable (mdate) values(to_date(?, 'hhhhmmdd hh24:mi:ss'))";
CallableStatement st = con.prepareCall(qry);
String t = "20041225 20:34:45";
st.setString( 1 , t);
st.executeUpdate();
...
...
Рейтинг: 0 / 0
Timestamp
    #32847813
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, все дело в том, что у меня метод toString объекта Timestamp выводит в формате 'yyyy-mm-dd hh:mi:ss.0' Где красным мне не понятно что за элемент даты.
...
Рейтинг: 0 / 0
Timestamp
    #32847819
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Русспасибо, все дело в том, что у меня метод toString объекта Timestamp выводит в формате 'yyyy-mm-dd hh:mi:ss.0' Где красным мне не понятно что за элемент даты.
прочитал в javadoc, что Timestamp выводит в формате 'yyyy-mm-dd hh:mm:ss.fffffffff' Но мой Oracle9i не понимает такой формат...
...
Рейтинг: 0 / 0
Timestamp
    #32847822
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Русспасибо, все дело в том, что у меня метод toString объекта Timestamp выводит в формате 'yyyy-mm-dd hh:mi:ss.0' Где красным мне не понятно что за элемент даты.
javadoc читать иногда надо.

оттуда:

javadoc
java.sql.Timestamp

public java.lang.String toString()

Formats a timestamp in JDBC timestamp escape format. yyyy-mm-dd hh:mm:ss.fffffffff,
where ffffffffff indicates nanoseconds.

...

Overrides:
toString in class Date
Returns:
a String object in yyyy-mm-dd hh:mm:ss.fffffffff format
...
Рейтинг: 0 / 0
Timestamp
    #32847827
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рус Русспасибо, все дело в том, что у меня метод toString объекта Timestamp выводит в формате 'yyyy-mm-dd hh:mi:ss.0' Где красным мне не понятно что за элемент даты.
прочитал в javadoc, что Timestamp выводит в формате 'yyyy-mm-dd hh:mm:ss.fffffffff' Но мой Oracle9i не понимает такой формат...

зачем втсавлять дату строкой? если так надо - форматируй дату как
душе пожелается, используя класс, например, java.text.SimpleDateFormat,
который позволяет делать date -> text и наоборот.
...
Рейтинг: 0 / 0
Timestamp
    #32847841
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попытался пойти другим путем, по подсказке А.Грасоff™. А именно:
получил ClassCastException когда пытался сделать st.setObject(1, aValue, Types.Timstamp); Где aValue получено rs.getObject(1);
...
Рейтинг: 0 / 0
Timestamp
    #32847863
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руспопытался пойти другим путем, по подсказке А.Грасоff™. А именно:
получил ClassCastException когда пытался сделать st.setObject(1, aValue, Types.Timstamp); Где aValue получено rs.getObject(1);

а что возвращается в твоем коде:

Код: plaintext
1.
2.
3.
Object aValue = rs.getObject( 1 );
String cn = aValue.getClass().getName();
System.out.println(cn); // здесь что имеем?
...
Рейтинг: 0 / 0
Timestamp
    #32847873
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java.sql.Timestamp

хотя metaData.getColumnTypeName(1) выдает DATE
...
Рейтинг: 0 / 0
Timestamp
    #32847885
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто я немного неполно привел пример, я делаю st.setObject(1, aValue, metaData.getColumnType(1))
...
Рейтинг: 0 / 0
Timestamp
    #32847887
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем использовать setObject() вместо setTimestamp() ?

PS есть такой принцип программирования - K.I.S.S. (keep it simple stupid)

--
Lacrima Mosa Est
...
Рейтинг: 0 / 0
Timestamp
    #32847898
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в том, чо у меня заранее неизвестен тип, либо придется делать case. Я решил использовать информацию о типе поля из metaData
...
Рейтинг: 0 / 0
Timestamp
    #32847904
Рус
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помогло вот что:
type = metaData.getColumnType(1);
if (type == Types.DATE) type = Types.TIMESTAMP;


но почему, блин, тип объекта и тип в мета данных разный?? Может, это особеенность моего драйвера jdbc?
...
Рейтинг: 0 / 0
Timestamp
    #32847937
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
Руспомогло вот что:
type = metaData.getColumnType(1);
if (type == Types.DATE) type = Types.TIMESTAMP;


но почему, блин, тип объекта и тип в мета данных разный?? Может, это особеенность моего драйвера jdbc?

timestamp не рекомендую!!!
а вот так получается дата ...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SimpleDateFormat nice =  new  SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
GregorianCalendar cal =  new  GregorianCalendar();
java.util.Date date = cal.getTime();

String dateStr = nice.format(date);



...
Рейтинг: 0 / 0
Timestamp
    #32847953
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ztimestamp не рекомендую!!!
а че так?
...
Рейтинг: 0 / 0
Timestamp
    #32847981
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
А.Грасоff™ ztimestamp не рекомендую!!!
а че так?

на 9-ке делал
Код: plaintext
1.
2.
3.
select ..
from ...
where dtime between ? and ?
для случая когда у первой даты время

0 часов 0 минут 0 секунд(у оракла это не 28-дек-2004 00:00:00, а 28-дек-2004), то оракл не рюхнет это время и эта запись не попадет в выборку...

во всех остальных случаях вроде все ок
...
Рейтинг: 0 / 0
Timestamp
    #32848043
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z для случая когда у первой даты время

0 часов 0 минут 0 секунд(у оракла это не 28-дек-2004 00:00:00, а 28-дек-2004), то оракл не рюхнет это время и эта запись не попадет в выборку...
Можешь показать пример запроса с указанием значений передаваемых параметров Timestamp'ов?
...
Рейтинг: 0 / 0
Timestamp
    #32848053
Фотография А.Грасоff™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Popov z для случая когда у первой даты время

0 часов 0 минут 0 секунд(у оракла это не 28-дек-2004 00:00:00, а 28-дек-2004), то оракл не рюхнет это время и эта запись не попадет в выборку...
Можешь показать пример запроса с указанием значений передаваемых параметров Timestamp'ов?:) я так и знал :)
...
Рейтинг: 0 / 0
Timestamp
    #32848181
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто ИМХО если бы обнаружилась такая ошибка, то она стала бы головною болью многих. А так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
Connection con;
...

Statement st = con.createStatement();

 try  {
  st.execute("drop table test");
}  catch  (SQLException e) {
}
st.execute("create table test (date_value date)");

Timestamp from =  new  Timestamp( 104 ,  0 ,  1 ,  0 ,  0 ,  0 ,  0 );
PreparedStatement pst = con.prepareStatement(
  "insert into test (date_value)\n" +
  "select ? + (rownum - 1) / 24\n" +
  "from scott.emp"
);
pst.setTimestamp( 1 , from);
pst.execute();

pst = con.prepareStatement(
  "select date_value from test\n" +
  "where date_value between ? and ?\n" +
  "order by date_value"
);

Timestamp to =  new  Timestamp( 105 ,  0 ,  1 ,  0 ,  0 ,  0 ,  0 );
pst.setTimestamp( 1 , from);
pst.setTimestamp( 2 , to);
ResultSet rs = pst.executeQuery();
 while  (rs.next()) {
  System.out.println(rs.getTimestamp("date_value"));
}

Выводятся все 14 записей, у первой - нулевое время.
...
Рейтинг: 0 / 0
Timestamp
    #32849100
z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
z
Гость
Прошу прощения, дествительно все пашет.
Я наверно когда тестил, забыл милисекунды устанавливать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Timestamp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]