在 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 應用程式可以使用目錄函式回傳的結果集中回傳的日期、時間或時間戳碼。