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 描述項欄位中的值不同。 (如需詳細資訊,請參閱資料行大小、小數位數、傳輸八位元長度和顯示大小。)

這些變更會影響 SQLDescribeColSQLDescribeParamSQLColAttributeSQLBindColSQLBindParameterSQLGetData 以及 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 應用程式可以使用目錄函式傳回的結果集內傳回的日期、時間或時間戳記代碼。