Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Date
Список форумов
 ->  Основы языка Java


На страницу 1, 2  След. 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
Егор : 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 
Ответить с цитатой
Нет, все отлично. Это скорее всего у вас с мэппингом проблемы.
Idea Традиционный вопрос "на засыпку": а какой у вас тип данных, в таблице БД на данную колонку?
К началу Посмотреть профиль Отправить личное сообщение
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 писал(а):
Мдя... че-то я туплю... редко, но бывает.

Если редко, то не страшно! Smile
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Marbo : 1179
Java Developer
Откуда: Украина, Одесса

СообщениеМай 15, 2008 16:56 
Ответить с цитатой
sql.Date... беее, давно уже использую long формата yyyyMMdd и не сильно от этого страдаю.
_________________
Не знала Настя, где зад, где перёд. Показали - разобралась.
К началу Посмотреть профиль Отправить личное сообщение Отправить e-mail
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 явадок знаком Smile работаю .NET девелопером учусь в Вузе изучаю яву в кач-ве курсовой поэтому не до доков
Кстати не до доков потомучт глаза устают
кстати в доках тоже прочитал что так

sgdread писал(а):
Код:
java.sql.Date d = new java.sql.Date(date.getTime());


дата должна конверт-ся до мсек но нет

Всем ответил Very Happy никого не забыл Smile
К началу Посмотреть профиль Отправить личное сообщение
Vlad : 1670
JavaTalks Team Member
Откуда: ODS-KRK-LON-HFE

СообщениеМай 16, 2008 12:12 
Ответить с цитатой
Егор писал(а):
Всем ответил Very Happy никого не забыл Smile

Всё-таки забыл Wink
Егор писал(а):
дата должна конверт-ся до мсек но нет

Как-то странно Вы читаете доки Confused
Ещё раз:
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());
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 2
На страницу 1, 2  След.
Список форумов
 -> Основы языка Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru