設定 java.sql.Time 值的傳送方式

下載 JDBC 驅動程式

如果您使用 java.sql.Time 物件或 java.sql.Types.TIME JDBC 類型來設定參數,則可以設定 java.sql.Time 值如何當成 SQL Server time 類型或 datetime 類型傳送給伺服器。

當您使用下列其中一個方法時,這個情況將會適用:

SendTimeAsDatetime

您可以設定 java.sql.Time 值如何使用 sendTimeAsDatetime 連線屬性來傳送。 如需詳細資訊,請參閱設定連線屬性

您可以使用程式設計方式,透過 SQLServerDataSource.setSendTimeAsDatetime 修改 sendTimeAsDatetime 連線屬性的值。

SQL Server 2008 (10.0.x)之 前的 SQL Server 版本不支援 time 資料類型,因此使用 java.sql.Time 的應用程式通常會將 java.sql.Time 值儲存為 datetimesmalldatetime SQL Server 資料類型。

如果您要在處理 java.sql.Time 值時使用 datetimesmalldatetime SQL Server 資料類型,您應該將 sendTimeAsDatetime 連接屬性設為 true。 如果您要在處理 java.sql.Time 值時使用 time SQL Server 資料類型,您應該將 sendTimeAsDatetime 連接屬性設為 false

將 java.sql.Time 值傳送給資料類型同時可以儲存日期的參數時,該預設日期會因為 java.sql.Time 值傳送為 datetime (1/1/1970) 或 time (1/1/1900) 值而有所不同。 如需將資料傳送給 SQL Server 時之資料轉換的詳細資訊,請參閱使用日期和時間資料

在 SQL Server JDBC Driver 3.0 中,sendTimeAsDatetime 預設為 true。 在未來的版本中,sendTimeAsDatetime 連線屬性可能會預設為 false。

若要確保應用程式能夠依照預期的形式繼續運作,而不論 sendTimeAsDatetime 連線屬性的預設值為何,您可以:

  • 在處理 time SQL Server 資料類型時使用 java.sql.Time。
  • 處理 datetimeSmalldatetimedatetime2 SQL Server 資料類型時,請使用 java.Timestamp。

加密資料行的 SendTimeAsDatetime 必須為 false,因為加密資料行不支援從時間轉換成日期時間。 從 Microsoft JDBC Driver 6.0 for SQL Server 開始,SQLServerConnection 類別有下列兩種方法可設定/取得 sendTimeAsDatetime 屬性的值。

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

另請參閱

了解 JDBC 驅動程式資料類型