Konfigurieren, wie java.sql.Time-Werte gesendet werden

JDBC-Treiber herunterladen

Wenn Sie ein java.sql.Time-Objekt oder den java.sql.Types.TIME-JDBC-Typ zum Festlegen eines Parameters verwenden, können Sie konfigurieren, wie der java.sql.Time-Wert an den Server gesendet wird: als time- oder als datetime-SQL Server-Typ.

Dies trifft zu, wenn eine der folgenden Methoden verwendet wird:

SendTimeAsDatetime

Verwenden Sie die sendTimeAsDatetime-Verbindungseigenschaft, um die Art und Weise zu konfigurieren, auf die der java.sql.Time-Wert gesendet wird. Weitere Informationen zum Festlegen der Verbindungseigenschaften finden Sie unter Setting the Connection Properties (Festlegen von Verbindungseigenschaften).

Der Wert der Verbindungseigenschaft sendTimeAsDatetime kann mit SQLServerDataSource.setSendTimeAsDatetime geändert werden.

In den SQL Server-Versionen vor SQL Server 2008 (10.0.x) wurde der time-Datentyp nicht unterstützt, sodass Anwendungen, die „java.sql.Time“ verwenden, java.sql.Time-Werte in der Regel entweder als datetime- oder smalldatetime-SQL Server-Datentypen speichern.

Wenn Sie beim Arbeiten mit java.sql.Time-Werten die datetime- und smalldatetime-SQL Server-Datentypen verwenden möchten, sollten Sie die Verbindungseigenschaft sendTimeAsDatetime auf TRUE festlegen. Wenn Sie beim Arbeiten mit java.sql.Time-Werten den time- SQL Server-Datentyp verwenden möchten, sollten Sie die Verbindungseigenschaft sendTimeAsDatetime auf FALSE festlegen.

Wenn Sie java.sql.Time-Werte in einen Parameter senden, dessen Datentyp auch das Datum speichern kann, unterscheiden sich die Standarddaten je nachdem, ob der java.sql.Time-Wert als datetime- (01.01.1970) oder time-Wert (01.01.1900) gesendet wird. Weitere Informationen zu Datenkonvertierungen beim Senden von Daten an SQL Server finden Sie unter Verwenden von Datums- und Zeitdaten.

Im JDBC-Treiber 3.0 für SQL Server ist sendTimeAsDatetime standardmäßig auf TRUE festgelegt. In einem künftigen Release wird die Verbindungseigenschaft sendTimeAsDatetime möglicherweise standardmäßig auf FALSE festgelegt.

Gehen Sie wie folgt vor, um zu gewährleisten, dass die Anwendung unabhängig vom Standardwert der Verbindungseigenschaft sendTimeAsDatetime weiterhin funktioniert:

  • Verwenden Sie java.sql.Time, wenn Sie den SQL Server-Datentyp time verwenden.
  • Verwenden Sie java.sql.Timestamp beim Arbeiten mit den SQL Server-Datentypen datetime, smalldatetime und datetime2.

SendTimeAsDatetime muss für verschlüsselte Spalten den Wert FALSE aufweisen, da verschlüsselte Spalten die Konvertierung von time in datetime nicht unterstützen. Beginnend mit Microsoft JDBC-Treiber 6.0 für SQL Server verfügt die SQLServerConnection-Klasse über die folgenden beiden Methoden, um den Wert der sendTimeAsDatetime-Eigenschaft festzulegen bzw. abzurufen.

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

Weitere Informationen

Grundlegendes zu den Datentypen des JDBC-Treibers