Проблема с датой в Oracle с использованием JDBC - PullRequest
2 голосов
/ 14 июля 2009

У меня следующий сценарий: Два компьютера: Первый компьютер под управлением Windows Vista, второй компьютер под управлением Linux, подключенный к Oracle 10g. Oracle 10g работает на втором компьютере.

Я сделал одну тестовую программу на Java, которая подключалась к Oracle с помощью ojdbc14.jar

Эта тестовая программа подключается только к базе данных, извлекает некоторые данные из определенной таблицы и печатает поле значения даты.

Когда я запускаю тест программы на первом компьютере, у меня дата «10/01/1987». Когда я запускаю тест программы в первую секунду, у меня такая дата, как '09 / 30/1987 '

Когда я использую plsqldeveloper для отображения этих данных, поле даты выглядит как '10/01/1987'

Кто-нибудь может объяснить, почему?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 14 июля 2009

Для меня это похоже на проблему с часовым поясом - одна машина настроена, например, на время США, а другая на GMT или UTC? Следовательно, даты - один день, но предположительно имеют одинаковое значение UTC / long.

Используете ли вы метку времени в качестве типа столбца в Oracle? например,;.

...
"created" timestamp(6) not null default systimestamp enable,
...

Тогда с помощью java.sql.Timestamp? e.g.:

...
Timestamp created = rs.getTimestamp("created");
...
0 голосов
/ 30 июля 2009

Обязательно проверьте также настройку NLS_DATE_FORMAT.

Это может быть настроено или по умолчанию, по-разному между двумя компьютерами.

См. Этот URL для дополнительных примеров: http://www.dba -oracle.com / t_nls_date_format_sysdate.htm

0 голосов
/ 14 июля 2009

Я думаю, что, возможно, Oracle хранит дату как значение GMT. То, что делает Oracle, правильно, но при чтении значения из базы данных Oracle вашему клиенту необходимо настроить дату по Гринвичу. Похоже, что «plsqldeveloper» показывает вам скорректированное время GMT-7 при запросах из окна Windows и необработанное время GMT при запросах из окна Linux. Я бы сказал, что Linux box (или plsqldeveloper "на Linux box) нуждается в дополнительной конфигурации для настройки GMT.

Кстати, если это действительно проблема с GMT, тогда она ДОЛЖНА также хранить время суток, ПОТОМУ ЧТО это единственный способ, которым корректировка GMT-7 может показаться равной 1 полному выходному. Итак, мне любопытно, что на ваших датах стоит отметка «время суток». Кроме того, когда вы входите в инструмент администратора Oracle и смотрите там дату, насколько она отличается? (Если у вас нет Oracle, вы можете скачать облегченную / экспресс-версию и ее легко настроить)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...