| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Егор : 128 Новичок Откуда: Ульяновск
|
Май 08, 2008 16:02 |
|
|
| Как конвертировать дату из java.util.Date в java.sql.Date ? |
|
|
|
 |
sgdread : 2184 JT Библиотекарь Откуда: USA
|
Май 08, 2008 16:13 |
|
|
| Код: |
java.sql.Date d = new java.sql.Date(date.getTime());
|
|
|
|
|
 |
Егор : 128 Новичок Откуда: Ульяновск
|
Май 15, 2008 9:32 |
|
|
| sgdread писал(а): |
| Код: |
java.sql.Date d = new java.sql.Date(date.getTime());
|
|
дан. код конвертирует дату неоднозначно те время отображ-ся как
00:00:00 всегда
Нельзя ли как то учитывать и время? |
|
|
|
 |
Fes : 71 Новичок Откуда: Gomel
|
Май 15, 2008 9:57 |
|
|
| Егор писал(а): |
дан. код конвертирует дату неоднозначно те время отображ-ся как
00:00:00 всегда
Нельзя ли как то учитывать и время? |
Можно узнать как вы получали время?
Обычно используют код как и привел sgdread
Можно так:
| Код: |
Date date = new Date();
java.sql.Date dateSQL = new java.sql.Date(date.getTime()); |
Можно использовать:
| Код: |
| dateSQL.setTime(date.getTime()); |
|
|
|
|
 |
sgdread : 2184 JT Библиотекарь Откуда: USA
|
Май 15, 2008 9:58 |
|
|
Нет, все отлично. Это скорее всего у вас с мэппингом проблемы.
Традиционный вопрос "на засыпку": а какой у вас тип данных, в таблице БД на данную колонку? |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Май 15, 2008 11:14 |
|
|
Народ, читайте javadoc к java.sql.Date!
java.sql.Date - отображает тип базы данных DATE, для TIMESTAMP (или DATETIME) используется тип java.sql.Timestamp. |
|
|
|
 |
sgdread : 2184 JT Библиотекарь Откуда: USA
|
Май 15, 2008 13:21 |
|
|
| Vlad писал(а): |
Народ, читайте javadoc к java.sql.Date!
java.sql.Date - отображает тип базы данных DATE, для TIMESTAMP (или DATETIME) используется тип java.sql.Timestamp. |
JavaDoc гласит:
| Цитата: |
A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT.
To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.
|
Про то, что он применяется только для мэппинга SQL-типа DATE тут ничего не сказано.
Тем не менее Vlad прав. Мэппинг java.sql.Date на таблицы (в MySQL) дает нули в часах и минутах на любые типы SQL (DATE, DATETIME, TIMESTAMP). |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Май 15, 2008 14:41 |
|
|
| sgdread писал(а): |
Про то, что он применяется только для мэппинга SQL-типа DATE тут
ничего не сказано. |
А это что
| javadoc for java.sql.Date писал(а): |
| A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. |
??
Другими словами здесь говориться о том, что данный тип следует использовать, когда ожидаем SQL тип DATE, иначе результат непредсказуем и зависит от конкретной СУБД. Напр., можно пробовать передавать строковое значение для даты, и некоторые СУБД заакцептируют это, а другие отбросят из-за несоответствия типов. |
|
|
|
 |
sgdread : 2184 JT Библиотекарь Откуда: USA
|
Май 15, 2008 16:30 |
|
|
| Мдя... че-то я туплю... редко, но бывает. |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Май 15, 2008 16:47 |
|
|
| sgdread писал(а): |
| Мдя... че-то я туплю... редко, но бывает. |
Если редко, то не страшно!  |
|
|
|
 |
Marbo : 1179 Java Developer Откуда: Украина, Одесса
|
Май 15, 2008 16:56 |
|
|
sql.Date... беее, давно уже использую long формата yyyyMMdd и не сильно от этого страдаю. _________________ Не знала Настя, где зад, где перёд. Показали - разобралась. |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Май 15, 2008 17:17 |
|
|
| Marbo писал(а): |
| sql.Date... беее, давно уже использую long формата yyyyMMdd и не сильно от этого страдаю. |
Если нет надобности использовать расширения SQL СУБД для работы с датами (например когда в запросе появляются условия с разницей дат в днях, месяцах, конктерный день недели и т.д.), то почему бы и нет. |
|
|
|
 |
sgdread : 2184 JT Библиотекарь Откуда: USA
|
Май 15, 2008 17:21 |
|
|
| В DB2 даже это не проблема - там есть куча функций для работы с датами. |
|
|
|
 |
Егор : 128 Новичок Откуда: Ульяновск
|
Май 16, 2008 11:05 |
|
|
Fes, я не идиот и делаю как sqdread
скорее всего надо setTime испол-ть
sqdread дата смотрю до поступления в базу - время у неё в виде 00:00:00
2 Vurn c явадок знаком работаю .NET девелопером учусь в Вузе изучаю яву в кач-ве курсовой поэтому не до доков
Кстати не до доков потомучт глаза устают
кстати в доках тоже прочитал что так
| sgdread писал(а): |
| Код: |
java.sql.Date d = new java.sql.Date(date.getTime());
|
|
дата должна конверт-ся до мсек но нет
Всем ответил никого не забыл  |
|
|
|
 |
Vlad : 1670 JavaTalks Team Member Откуда: ODS-KRK-LON-HFE
|
Май 16, 2008 12:12 |
|
|
| Егор писал(а): |
Всем ответил никого не забыл  |
Всё-таки забыл
| Егор писал(а): |
| дата должна конверт-ся до мсек но нет |
Как-то странно Вы читаете доки
Ещё раз:
| javadoc for java.sql.Date писал(а): |
| To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to ZERO in the particular time zone with which the instance is associated |
Чтобы не терять время при работе с JDBC APi, рекомендую делать так:
| Код: |
java.util.Date date = new java.util.Date();
java.sql.Timestamp tstamp = new java.sql.Timestamp(date.getTime());
...
// Использование в с JDBC API
preparedStmnt.setTimestamp(tstamp);
...
java.util.Date date = new java.util.Date(resultSet.getTimestamp().getTime()); |
|
|
|
|
 |
|
|