SQL Server Native Client 日期和時間改善
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
重要
SQL Server Native Client (SNAC) 未隨附:
- SQL Server 2022 (16.x) 及更新版本
- SQL Server Management Studio 19 與更新版本
不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 進行新的應用開發。
針對新專案,請使用下列其中一個驅動程式:
針對 SQL Server 資料庫引擎 (2012 到 2019 版) 的隨附元件 SQLNCLI,請參閱支援生命週期例外狀況。
本主題描述 SQL Server 2008 中新增之日期和時間數據類型的 SQL Server Native Client 支援(10.0.x)。
如需日期/時間改善的詳細資訊,請參閱 日期和時間改善 (OLE DB) 和 日期和時間改善 (ODBC) 。
使用量
下列章節描述使用新日期和時間類型的各種方式。
將 Date 當做不同的資料類型使用
從 SQL Server 2008 (10.0.x) 開始,日期/時間類型的增強支援讓使用 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 (10.0.x) 中引進的所有日期和時間類型之間的轉換。