Запрос на проверку - Как базы данных и Java хранят и обрабатывают часовые пояса? - PullRequest
3 голосов
/ 08 декабря 2010

Приношу свои извинения за чрезвычайно простой вопрос, думаю, я знаю ответ, но хотел бы проверить:

При обращении к часовым поясам и к тому, как они обычно хранятся в базе данных и в java.util.Дата:

  • При сохранении поля даты в базе данных оно не зависит от часового пояса (например, всегда сохраняет в UTC)
  • При использовании объекта даты Java дата также не зависит от часового пояса
  • Часовой пояс зависит только при форматировании и разборе дат (DB и Java)
  • При использовании Java - для форматирования / анализа дат будет использоваться JVM user.timezone
  • При использовании Java в Windows - Java будет автоматически извлекать это из региональных настроек
  • Часовой пояс базы данных (и часовой пояс компьютера) не имеет отношения к клиенту Java JDBC
  • Часовой пояс сервера базы данныхрелевантно только для прямого синтаксического анализа и форматирования SQL

Мои вопросы:

  1. Верны ли все приведенные выше предположения?некоторые?все неправильно?
  2. Есть ли справочный / официальный источник, который подтверждает это более "официально"?

1 Ответ

1 голос
/ 08 декабря 2010

Предположение в основном верно для Java. Они не обязательно корректны для баз данных, так как есть различия.

Java обрабатывает часовые пояса с объектами календаря. Объект java.util.Date всегда содержит значение UTC.

Базы данных обычно хранят и возвращают даты и метки времени (с часами, минутами и т. Д.) В том виде, в котором они написаны, независимо от внутреннего формата, используемого хранилищем. Если вы храните 2010-12-25, вы получите одно и то же значение независимо от часового пояса клиентов или сервера.

Некоторые базы данных имеют тип данных TIMESTAMP WITH TIMEZONE, который хранит как временную метку, так и часовой пояс по отдельности.

Даты и временные метки преобразуются между Java и базой данных, обычно таким образом, что используемые подклассы java.util.Date интерпретируются в часовом поясе клиента JDBC.

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