Настройка отправки значений java.sql.Time

Скачать драйвер JDBC

Если для задания параметра используется объект java.sql.Time или тип JDBC java.sql.Types.TIME, можно настроить способ отправки значения java.sql.Time на сервер; либо в качестве типа времени SQL Server, либо в качестве типа даты и времени.

Этот сценарий применяется в случае использования одного из следующих методов:

SendTimeAsDatetime

Порядок отправки значения java.sql.Time можно настроить с помощью свойства соединения sendTimeAsDatetime. Дополнительные сведения см. в разделе Настройка свойств подключения.

Значение свойства соединения sendTimeAsDatetime можно изменить программным образом с помощью SQLServerDataSource.setSendTimeAsDatetime.

Версии SQL Server, предшествующие SQL Server 2008 (10.0.x), не поддерживают тип данных time, поэтому приложения, использующие java.sql.Time, обычно хранят значения java.sql.Time в типах данных SQL Server datetime или smalldatetime.

Если вы хотите использовать типы данных SQL Server datetime и smalldatetimeпри работе со значениями java.sql.Time, необходимо задать для свойства подключения sendTimeAsDatetime значение true. Если вы хотите использовать тип данных SQL Server time при работе со значениями java.sql.Time, необходимо задать для свойства подключения sendTimeAsDatetime значение false.

Если значения java.sql.Time передаются в параметр, тип данных которого также поддерживает хранение дат, эти даты по умолчанию будут отличаться в зависимости от того, как отправляется значение java.sql.Time: как datetime (01.01.1970) или как time (01.01.1900). Дополнительные сведения о преобразованиях данных при отправке данных в SQL Server см. в разделе "Использование данных даты и времени".

В SQL Server JDBC Driver 3.0 параметр sendTimeAsDatetime по умолчанию имеет значение true. В следующей версии свойство соединения sendTimeAsDatetime может иметь значение false по умолчанию.

Чтобы гарантировать, что приложение будет работать ожидаемым образом независимо от значения по умолчанию для свойства соединения sendTimeAsDatetime, можно выполнить следующие действия.

  • Используйте java.sql.Time при работе с типом данных SQL Server time.
  • Используйте java.sql.Timestamp при работе с типами данных datetime, smalldatetime и datetime2SQL Server.

SendTimeAsDatetime должен иметь значение FALSE для зашифрованных столбцов, так как они не поддерживают преобразование типа time в datetime. Начиная с Microsoft JDBC Driver 6.0 для SQL Server, класс SQLServerConnection содержит два следующих метода для задания и получения значений свойства sendTimeAsDatetime.

  public boolean getSendTimeAsDatetime()
  public void setSendTimeAsDatetime(boolean sendTimeAsDateTimeValue)