日期时间数据类型
在 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,#define 实例已相应地更改。
ODBC 3.x 中 SQL 日期时间数据类型返回的列大小和小数位数与 ODBC 2.x 中返回的精度和小数位数相同。 这些值不同于 SQL_DESC_PRECISION 和 SQL_DESC_SCALE 描述符字段中的值。 (有关详细信息,请参阅 附录 D 中的列大小、十进制数字、传输八进制数长度和显示大小 :数据类型。
这些更改会影响 SQLDescribeCol、SQLDescribeParam 和 SQLColAttributes; SQLBindCol、SQLBindParameter 和 SQLGetData;SQLColumns、SQLGetTypeInfo、SQLProcedureColumns、SQLStatistics 和 SQLSpecialColumns。
ODBC 3.x 驱动程序根据SQL_ATTR_ODBC_VERSION环境属性的设置处理上一段中列出的函数调用。 对于 SQLColumns、SQLGetTypeInfo、SQLProcedureColumns、SQLSpecialColumns 和 SQLStatistics,如果SQL_ATTR_ODBC_VERSION设置为SQL_OV_ODBC3,则函数在DATA_TYPE字段中返回SQL_TYPE_DATE、SQL_TYPE_TIME和SQL_TYPE_TIMESTAMP。 COLUMN_SIZE列(SQLColumns、SQLGetTypeInfo、SQLProcedureColumns 和 SQLSpecialColumns 返回的结果集中)包含近似数值类型的二进制精度。 如果SQL_ATTR_ODBC_VERSION设置为SQL_OV_ODBC2,则函数在DATA_TYPE字段中返回SQL_DATE、SQL_TIME和SQL_TIMESTAMP,COLUMN_SIZE列包含近似数值类型的十进制精度。
在调用 SQLGetTypeInfo 中请求所有数据类型时,函数返回的结果集将包含 ODBC 3.x 中定义的SQL_TYPE_DATE、SQL_TYPE_TIME和SQL_TYPE_TIMESTAMP,以及 ODBC 2.x 中定义的SQL_DATE、SQL_TIME和SQL_TIMESTAMP。
由于 ODBC 3.x 驱动程序管理器如何执行日期、时间和时间戳数据类型的映射,ODBC 3.x 驱动程序只需识别在 SQLBindCol和 SQLGetData的 TargetType 参数中输入的日期、时间和时间戳 C 数据类型的 91、92 和 93 的 #defines, 并且只需要识别在 SQLBindParameter 参数中输入的日期、时间和时间戳 SQL 数据类型的 91、92 和 93 的 #defines 或 SQLGetTypeInfo 的 DataType 参数。 有关详细信息,请参阅 Datetime 数据类型更改。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈