Datetime 資料類型變更

在 ODBC 3.x 中,日期、時間及時間戳記 SQL 資料型別的識別碼由 SQL_DATE、SQL_TIME 和 SQL_TIMESTAMP(標頭檔 9、10 和 11 中包含 #define )改為 SQL_TYPE_DATE、SQL_TYPE_TIME 和 SQL_TYPE_TIMESTAMP(標頭檔 91 中包含 #define 實例, 分別是92年和93年)。 對應的 C 類型識別碼分別由 SQL_C_DATE、SQL_C_TIME 和 SQL_C_TIMESTAMP 改為 SQL_C_TYPE_DATE、SQL_C_TYPE_TIME 和 SQL_C_TYPE_TIMESTAMP。

ODBC 3.x 中 SQL datetime 資料型別回傳的欄位大小與小數位數,與 ODBC 2.x 中回傳的精確度與刻度相同。 這些值與SQL_DESC_PRECISION和SQL_DESC_SCALE描述符欄位中的值不同。 (更多資訊請參見 欄位大小、十進位數字、傳輸八重奏長度及顯示大小。)

這些變更影響 SQLDescribeCol、 SQLDescribeParam 及 SQLColAttribute; SQLBindCol、 SQLBindParameter 及 SQLGetData;以及 SQLColumns、 SQLGetTypeInfo、 SQLProcedureColumns、 SQLStatistics 和 SQLSpecialColumns。

下表展示了 ODBC 3.x 驅動管理器如何對應 SQLBindCol 與 SQLGetData 的 TargetType 參數,或 SQLBindParameter 的 ValueType 參數中輸入的日期、時間與時間戳 C 資料型態。

數據類型

輸入代碼
2.x 應用程式轉為

2.x 驅動程式
2.x 應用程式轉為

3.x 驅動程式
3.x 應用程式轉為

2.x 驅動程式
3.x 應用程式轉換到

3.x 驅動程式
SQL_C_DATE(9) 沒有映射 SQL_C_TYPE_DATE(91) 無映射[1] SQL_C_TYPE_DATE(91)
SQL_C_TYPE_DATE(91) 錯誤(來自DM) 錯誤(來自DM) SQL_C_DATE(9) 無映射[2]
SQL_C_TIME(10) 沒有映射 SQL_C_TYPE_TIME(92) 無映射[1] SQL_C_TYPE_TIME(92)
SQL_C_TYPE_TIME(92) 錯誤(來自DM) 錯誤(來自DM) SQL_C_TIME(10) 無映射[2]
SQL_C_TIMESTAMP(11) 沒有映射 SQL_C_TYPE_TIMESTAMP(93) 無映射[1] SQL_C_TYPE_TIMESTAMP(93)
SQL_C_TYPE_TIMESTAMP(93) 錯誤(來自DM) 錯誤(來自DM) SQL_C_TIMESTAMP(11) 無映射[2]

[1] 因此,使用 ODBC 2.x 驅動程式的 ODBC 3.x 應用程式可以使用目錄函式回傳的結果集中提供的日期、時間或時間戳碼。

[2] 因此,使用 ODBC 3.x 驅動程式的 ODBC 3.x 應用程式可以使用目錄函式回傳的結果集中回傳的日期、時間或時間戳碼。

下表展示了 ODBC 3.x 驅動程式管理員如何對應 SQLBindParameter 的 ParameterType 參數或 SQLGetTypeInfo 的 DataType 參數中輸入的日期、時間與時間戳 SQL 資料型態。

數據類型

輸入代碼
2.x 應用程式轉為

2.x 驅動程式
2.x 應用程式轉為

3.x 驅動程式
3.x 應用程式轉換到

2.x 驅動程式
3.x 應用程式轉換到

3.x 驅動程式
SQL_DATE(9) 沒有映射 SQL_TYPE_DATE (91) 無映射[1] SQL_TYPE_DATE(91)
SQL_TYPE_DATE (91) 錯誤(來自DM) 錯誤(來自DM) SQL_DATE(9) 無映射[2]
SQL_TIME(10) 沒有映射 SQL_TYPE_TIME(92) 無映射[1] SQL_TYPE_TIME(92)
SQL_TYPE_TIME(92) 錯誤(來自DM) 錯誤(來自DM) SQL_TIME(10) 無映射[2]
SQL_TIMESTAMP(11歲) 沒有映射 SQL_TYPE_TIMESTAMP(93) 無映射[1] SQL_TYPE_TIMESTAMP(93)
SQL_TYPE_TIMESTAMP(93) 錯誤(來自DM) 錯誤(來自DM) SQL_TIMESTAMP(11歲) 無映射[2]

[1] 因此,使用 ODBC 2.x 驅動程式的 ODBC 3.x 應用程式可以使用目錄函式回傳的結果集中提供的日期、時間或時間戳碼。

[2] 因此,使用 ODBC 3.x 驅動程式的 ODBC 3.x 應用程式可以使用目錄函式回傳的結果集中回傳的日期、時間或時間戳碼。