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描述符欄位中的值不同。 (更多資訊請參見 欄位大小、十進位數字、傳輸八重奏長度及顯示大小。)

這些變更影響 SQLDescribeColSQLDescribeParamSQLColAttribute; SQLBindColSQLBindParameterSQLGetData;以及 SQLColumnsSQLGetTypeInfoSQLProcedureColumnsSQLStatisticsSQLSpecialColumns

下表展示了 ODBC 3.x 驅動管理器如何對應 SQLBindColSQLGetDataTargetType 參數,或 SQLBindParameterValueType 參數中輸入的日期、時間與時間戳 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 驅動程式管理員如何對應 SQLBindParameterParameterType 參數或 SQLGetTypeInfoDataType 參數中輸入的日期、時間與時間戳 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 應用程式可以使用目錄函式回傳的結果集中回傳的日期、時間或時間戳碼。