本主題描述 SQL Server 2008 中新增之日期和時間數據類型的 SQL Server Native Client 支援。
如需日期/時間改善的詳細資訊,請參閱 日期和時間改善 (OLE DB) 和 日期和時間改善 (ODBC) 。
如需示範這項功能之範例應用程式的相關信息,請參閱 SQL Server 數據程式設計範例。
用法
下列各節說明使用新日期和時間類型的各種方式。
使用日期做為相異數據類型
從 SQL Server 2008 開始,日期/時間類型的增強支援可讓使用 SQL_TYPE_DATE ODBC 類型(ODBC 2.0 應用程式的SQL_DATE)和 DBTYPE_DBDATE OLE DB 類型更有效率。
使用時間做為相異數據類型
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 型別及其對應的結構應該正常運作。
使用時間做為具有擴充小數秒精確度的相異數據類型
某些應用程式,例如進程控制和製造應用程式,需要能夠以高達 100 奈秒的精確度來處理時間數據。 此用途的新類型為 DBTYPE_DBTIME2 (OLE DB) 和 SQL_SS_TIME2 (ODBC)。
使用 Datetime 搭配擴充小數秒精確度
OLE DB 已經定義精確度高達 1 奈秒的類型。 不過,現有的 SQL Server 應用程式已經使用此類型,因此這類應用程式預期只有 1/300 秒的精確度。 新的 datetime2(3) 類型與現有的 datetime 類型不直接相容。 如果這會影響應用程式行為的風險,應用程式必須使用新的 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 數據搭配 Client-Side 轉換與現有轉換一致
ODBC 標準描述現有日期、時間和時間戳類型之間的轉換如何運作。 這些會以一致的方式擴充,以包含 SQL Server 2008 中引進的所有日期和時間類型之間的轉換。