日期/時間的改善
本主題描述 SQL Server Native Client 對 SQL Server 2008 中所加入日期和時間資料類型的支援。
如需有關日期/時間改善功能的詳細資訊,請參閱<日期/時間增強功能 (OLE DB)>和<ODBC 日期/時間的改善 (ODBC)>。
如需有關示範這項功能之範例應用程式的詳細資訊,請參閱 SQL Server 資料程式設計範例。
使用方式
下列章節描述使用新日期和時間類型的各種方式。
將 Date 當做不同的資料類型使用
從 SQL Server 2008 開始,對於日期/時間類型的增強支援讓使用 SQL_TYPE_DATE ODBC 類型 (適用於 ODBC 2.0 應用程式的 SQL_DATE) 和 DBTYPE_DBDATE OLE DB 類型更有效率。
將 Time 當做不同的資料類型使用
OLE DB 已經有只包含時間的資料類型 DBTYPE_DBTIME,其精確度為 1 秒。 在 ODBC 中,對等的類型為 SQL_TYPE_TIME (適用於 ODBC 2.0 應用程式的 SQL_TIME)。
新 SQL Server 時間資料類型的小數秒精確度為 100 奈秒。 這需要使用 SQL Server Native Client 中的新類型:DBTYPE_DBTIME2 (OLE DB) 和 SQL_SS_TIME2 (ODBC)。 為使用不含小數秒的時間而撰寫的現有應用程式可以使用 time(0) 資料行。 除非應用程式依賴中繼資料中所傳回的類型,否則現有的 OLE DB DBTYPE_TIME 和 ODBC SQL_TYPE_TIME 類型及其對應的結構應該正常運作。
使用包含擴充小數秒精確度的 Time 做為不同的資料類型
有些應用程式 (例如,處理序控制項和製造應用程式) 必須能夠處理精確度高達 100 奈秒的時間資料。 基於此目的的新類型為 DBTYPE_DBTIME2 (OLE DB) 和 SQL_SS_TIME2 (ODBC)。
使用包含擴充小數秒精確度的 Datetime
OLE DB 已經定義一個精確度高達 1 奈秒的類型。 不過,此類型已由現有的 SQL Server 應用程式所使用,而且此類應用程式的精確度應該只有一秒的 1/300。 新的 datetime2(3) 類型與現有的日期時間類型不直接相容。 如果這有影響應用程式行為的風險,應用程式必須使用新的 DBCOLUMN 旗標來判斷實際的伺服器類型。
ODBC 也已經定義一個精確度高達 1 奈秒的類型。 不過,此類型已由現有的 SQL Server 應用程式所使用,而且此類應用程式的精確度應該只有 3 毫秒。 新的 datetime2(3) 類型與現有的 datetime 類型不直接相容。 datetime2(3) 的精確度為 1 毫秒,而 datetime 的精確度為一秒的 1/300。 在 ODBC 中,應用程式可以判斷正搭配描述項欄位 SQL_DESC_TYPE_NAME 使用的伺服器類型。 因此,現有的類型 SQL_TYPE_TIMESTAMP (適用於 ODBC 2.0 應用程式的 SQL_TIMESTAMP) 可同時用於兩種類型。
使用包含擴充小數秒精確度和時區的 Datetime
某些應用程式需要包含時區資訊的日期時間值。 這受到新 DBTYPE_DBTIMESTAMPOFFSET (OLE DB) 和 SQL_SS_TIMESTAMPOFFSET (ODBC) 類型的支援。
搭配與現有轉換一致的用戶端轉換使用 Date/Time/Datetime/Datetimeoffset 資料
ODBC 標準描述現有日期、時間和時間戳記類型之間的轉換如何運作。 這些類型會以一致的方式擴充,以包含 SQL Server 2008 中所推出之所有日期和時間類型之間的轉換。