Как правильно настроить часовой пояс в JDBC? - PullRequest
2 голосов
/ 23 марта 2011

У меня есть этот URL для установки соединения на моем итальянском веб-сайте, однако, когда я пытаюсь выполнить какое-либо действие вставки с сайта, дата все еще не верна. (это должно быть например: 01:24, но это 02:24)

jdbc.url=jdbc:mysql://sql.example.com/database?autoReconnect=true&characterEncoding=UTF-8&sessionVariables=time_zone='Europe/Rome'

Нужно ли добавлять какие-либо другие параметры, чтобы он работал правильно? Есть ли полный список всех часовых поясов?

Ответы [ 2 ]

5 голосов
/ 23 марта 2011

Извините, у меня нет ответа на ваш прямой вопрос. Тем не менее, я могу предложить кое-что, о чем стоит подумать, чтобы полностью избежать проблем с часовыми поясами в базе данных. Если возможно, я рекомендую просто использовать BIGINT поля для хранения дат в Java. Вы просто сохраняете long числа миллисекунд с начала эпохи, например, от System.currentTimeMillis() или Date.getTime().

Тогда интерпретация часового пояса для даты всегда осуществляется в Java, что хорошо при использовании числа, основанного на эпохе. Это немного усложняет непосредственный запрос к базе данных о дате за пределами Java, однако это не слишком сложно и, как правило, стоит того IMO:

SELECT FROM_UNIXTIME(date_field / 1000) FROM table;
1 голос
/ 23 марта 2011

Список имен часовых поясов "tz" есть в Википедии .

...