
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
10.12.2018, 21:58
|
|||
|---|---|---|---|
|
|||
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
Здравствуйте! Разбирался с проблемой при вставке дат в Oracle через JDBC стандартного драйвера от Oracle - существуют определённые corner cases - когда времени, содержащегося в java.sql.Timestamp не существует, т.е. время потерянное при переходе в Daylight Saving Time, например с 2 до 3 часов ночи в день перевода часов вперёд весной. При тестировании обнаружилось, что в зависимости от используемой версии JDBC драйвера результат различается - записанное время в базе может отличаться (на 1 час) или не отличатся от поставленного в java.sql.Timestamp. Тестируемая база, код, версия Java одни и те же - различные были только JDBC драйверы. Как я выяснил, в Oracle содержатся файлы с информацией по изменениям Daylight Saving Time для разных Timezones, но мне не понятно как работает JDBC driver - в нём самом ничего похожего на справочник по Daylight Saving Time/Timezones я не нашёл. Неужели драйвер запрашивает базу о Daylight Saving Time? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.12.2018, 22:32
|
|||
|---|---|---|---|
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
IgorMpкак работает JDBC driverВ стандартном java.sql нет таймстапа с таймзоной, мапинг на sql-ный timestamp with time zone не предусмотрен и, соответсвенно, нет проблем с переходом на зимнее/летнее время. Оракловый oracle.sql.TIMESTAMPTZ поддерживает тайм зону и что в нее запишешь, то и будет передаваться при окммуникациях с БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.12.2018, 22:49
|
|||
|---|---|---|---|
|
|||
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
-2-IgorMpкак работает JDBC driverВ стандартном java.sql нет таймстапа с таймзоной, мапинг на sql-ный timestamp with time zone не предусмотрен и, соответсвенно, нет проблем с переходом на зимнее/летнее время. Оракловый oracle.sql.TIMESTAMPTZ поддерживает тайм зону и что в нее запишешь, то и будет передаваться при окммуникациях с БД. Спасибо, я это более-менее знаю, мой вопрос был не том, как обойти проблему, а как оно работает. Распишу подробнее: 1. Тип в базе простой TIMESTAMP 2. Java код пишет insert c java.sql.Timestamp с определённым временем (несуществующим из-за перехода в DST) 3. На выходе в базе разные значения в зависимости от версии используемого JDBC драйвера Вопрос - как такое могло произойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.12.2018, 22:55
|
|||
|---|---|---|---|
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
IgorMpРаспишу подробнее: 1. Тип в базе простой TIMESTAMP 2. Java код пишет insert c java.sql.Timestamp с определённым временем (несуществующим из-за перехода в DST) 3. На выходе в базе разные значения в зависимости от версии используемого JDBC драйвера Вопрос - как такое могло произойти?несуществующего времени в timestamp без тайм зоны не бывает (кроме 1582). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.12.2018, 02:35
|
|||
|---|---|---|---|
|
|||
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
Бывает даже несуществующее время в DATE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.12.2018, 02:48
|
|||
|---|---|---|---|
|
|||
Как Oracle JDBC driver модифицирует даты в зависимости от Daylight Saving Time? |
|||
|
#18+
Хотя, вру, это было именно timestamp Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&mobile=1&tid=1883058]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
23ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 390ms |

| 0 / 0 |
