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 日期时间数据类型返回的列大小和小数位数与 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 应用程序可以使用目录函数返回的结果集中返回的日期、时间或时间戳代码。