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 描述符字段中的值。 (有关详细信息,请参阅“列大小、小数位数、传输八位字节长度和显示大小”。)

这些更改会影响 SQLDescribeColSQLDescribeParamSQLColAttributeSQLBindColSQLBindParameterSQLGetDataSQLColumnsSQLGetTypeInfoSQLProcedureColumnsSQLStatisticsSQLSpecialColumns

下表显示了 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 应用程序可以使用目录函数返回的结果集中返回的日期、时间或时间戳代码。