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、92 和 93 的標頭檔中的 #define 執行個體)。 對應的 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 應用程式可以使用目錄函式傳回的結果集內傳回的日期、時間或時間戳記代碼。