Spec-Zone.ru › MySQL Connectors 1.0

6.3.11 Обработка типов DateTime

  • connectionTimeZone

    Настраивает часовой пояс подключения, который используется Connector/J, если при сохранении мгновенных временных значений требуется преобразование между значением по умолчанию JVM и целевым часовым поясом.

    Принимает имя географического часового пояса или смещение часового пояса от Гринвича/UTC, используя синтаксис, который может разобрать 'java.time.ZoneId', или одно из двух логических значений "LOCAL" и "SERVER". По умолчанию значение равно "LOCAL". Если задан явный часовой пояс, то он должен поддерживаться как JVM, так и MySQL. Если задано значение "LOCAL", драйвер предполагает, что часовой пояс подключения совпадает с часовым поясом JVM по умолчанию. Если задано значение "SERVER", драйвер пытается определить часовой пояс сеанса из значений, настроенных в переменных сеанса MySQL-сервера 'time_zone' или 'system_time_zone'. Обнаружение часового пояса и последующее сопоставление с часовым поясом Java могут завершиться неудачей по нескольким причинам, в основном из-за использования сокращений названий часовых поясов, в этом случае необходимо установить явный часовой пояс или настроить другой часовой пояс на сервере.

    Этот параметр сам по себе не устанавливает переменную сеанса MySQL-сервера 'time_zone' в заданное значение. Для этого необходимо установить параметр подключения 'forceConnectionTimeZoneToSession' в значение "true".

    Обратите внимание, что установка значения для 'connectionTimeZone' в сочетании с "forceConnectionTimeZoneToSession=false" и "preserveInstants=false" не имеет эффекта, так как в этом случае этот параметр не используется для изменения часового пояса сеанса, ни для преобразований часовых поясов данных, основанных на времени.

    Прежний параметр подключения 'serverTimezone' по-прежнему допустим как псевдоним для этого параметра, но в будущем может быть устаревшим.

    Дополнительную информацию см. в параметрах 'forceConnectionTimeZoneToSession' и 'preserveInstants'.

    С версии 3.0.2
  • forceConnectionTimeZoneToSession

    При включении устанавливает значение часового пояса, определённое свойством подключения 'connectionTimeZone', в текущую переменную сеанса сервера 'time_zone'. Если значение часового пояса задано как географический часовой пояс, то Connector/J устанавливает это значение в сеансе сервера как есть, в этом случае таблицы системы часовых поясов должны быть заполнены предварительно (см. документацию MySQL Server для получения дополнительной информации); однако, если значение задано как смещение от Гринвича/UTC в любом из поддерживаемых синтаксисов, то часовой пояс сеанса сервера устанавливается как числовое смещение от UTC.

    В этом случае не требуется промежуточное преобразование между часовым поясом JVM по умолчанию и часовым поясом подключения для хранения корректного значения миллисекунд мгновенных объектов Java, таких как 'java.sql.Timestamp' или 'java.time.OffsetDateTime', при хранении в столбцах TIMESTAMP.

    Обратите внимание, что это также влияет на результат работы функций MySQL, таких как 'NOW()', 'CURTIME()' или 'CURDATE()'.

    Этот параметр не имеет эффекта, если используется совместно с "connectionTimeZone=SERVER", так как в этом случае сеанс уже настроен на нужный часовой пояс.

    Дополнительную информацию см. в параметрах 'connectionTimeZone' и 'preserveInstants'.

    Значение по умолчанию false
    С версии 8.0.23
  • noDatetimeStringSync

    Не гарантировать, что 'ResultSet.getTimestamp().toString().equals(ResultSet.getString())'.

    Значение по умолчанию false
    С версии 3.1.7
  • preserveInstants

    Если включено, Connector/J делает всё возможное, чтобы сохранить мгновенную точку на временной шкале для объектов Java, основанных на моментах времени, таких как 'java.sql.Timestamp' или 'java.time.OffsetDateTime', вместо их первоначального визуального представления. В противном случае драйвер всегда использует часовой пояс JVM по умолчанию для отображения значений, которые он отправляет на сервер, и для построения объектов Java из полученных данных.

    MySQL использует неявное преобразование часового пояса для значений TIMESTAMP: они преобразуются из часового пояса сеанса в UTC для хранения и обратно из UTC в часовой пояс сеанса для извлечения. Таким образом, чтобы сохранить корректное значение UTC внутри, драйвер преобразует значение из исходного часового пояса в часовой пояс сеанса перед отправкой на сервер. При извлечении Connector/J преобразует полученное значение из часового пояса сеанса в часовой пояс JVM по умолчанию.

    При хранении преобразование выполняется только в том случае, если целевой 'SQLType', либо явный, либо по умолчанию, равен TIMESTAMP. При извлечении преобразование выполняется только в том случае, если исходный столбец имеет тип TIMESTAMP, DATETIME или символьного типа, а целевой класс — основанный на моментах времени, например, 'java.sql.Timestamp' или 'java.time.OffsetDateTime'.

    Обратите внимание, что этот параметр не имеет эффекта, если используется в сочетании с "connectionTimeZone=LOCAL", так как в этом случае исходный и целевой часовые пояса одинаковы. Однако в этом случае всё ещё можно сохранить правильное значение момента времени, если он установлен вместе с "forceConnectionTimeZoneToSession=true".

    Дополнительную информацию см. в параметрах 'connectionTimeZone' и 'forceConnectionTimeZoneToSession'.

    Значение по умолчанию true
    С версии 8.0.23
  • sendFractionalSeconds

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

    Значение по умолчанию true
    С версии 5.1.37
  • sendFractionalSecondsForTime

    Если установлено в "false", дробная часть секунды 'java.sql.Time' будет игнорироваться в соответствии со спецификацией JDBC. Если установлено в "true", её значение отображается с дробной частью секунды, что позволяет хранить миллисекунды в столбце TIME MySQL. Этот параметр применим только к подготовленным запросам, вызываемым операциям или обновляемым наборам результатов. Он не имеет эффекта, если "sendFractionalSeconds=false".

    Значение по умолчанию true
    С версии 8.0.23
  • treatMysqlDatetimeAsTimestamp

    Должен ли драйвер рассматривать тип MySQL DATETIME как TIMESTAMP в 'ResultSet.getObject()'? Включение этого параметра изменяет сопоставление по умолчанию типов данных MySQL с типами Java для DATETIME со 'java.time.LocalDateTime' на 'java.sql.Timestamp'. Учитывая природу типа DATETIME и его неспособность представлять мгновенные значения, не рекомендуется включать этот параметр, если драйвер используется с фреймворком или API, которые ожидают исключительно объекты, соответствующие сопоставлению по умолчанию типов данных MySQL с типами Java, что, например, характерно для 'javax.sql.rowset.CachedRowSet'.

    Значение по умолчанию false
    С версии 8.2.0
  • treatUtilDateAsTimestamp

    Должен ли драйвер рассматривать 'java.util.Date' как TIMESTAMP в 'PreparedStatement.setObject()'?

    Значение по умолчанию true
    С версии 5.0.5
  • yearIsDateType

    Должен ли JDBC драйвер рассматривать тип MySQL YEAR как 'java.sql.Date', или как SHORT?

    Значение по умолчанию true
    С версии 3.1.9
  • zeroDateTimeBehavior

    Что должно произойти, когда драйвер столкнётся со значениями DATETIME, полностью состоящими из нулей — используемыми MySQL для представления недопустимых дат? Допустимые значения — "EXCEPTION", "ROUND" и "CONVERT_TO_NULL".

    Значение по умолчанию EXCEPTION
    С версии 3.1.4

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-j-en/connector-j-connp-props-datetime-types-processing.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API