从 C 到 SQL:年月间隔
年月间隔 ODBC C 数据类型的标识符为:
SQL_C_INTERVAL_MONTH SQL_C_INTERVAL_YEAR SQL_C_INTERVAL_YEAR_TO_MONTH
下表显示了可以将年-月间隔 C 数据转换为的 ODBC SQL 数据类型。 有关表中的列和术语的说明,请参阅 将数据从 C 转换为 SQL 数据类型。
SQL 类型标识符 | 测试 | SQLSTATE |
---|---|---|
SQL_CHAR[a] SQL_VARCHAR[a] SQL_LONGVARCHAR[a] |
列字节长度 >= 字符字节长度 列字节长度 < 字符字节长度[a] 数据值不是有效的间隔文本 |
不适用 22001 22015 |
SQL_WCHAR[a] SQL_WVARCHAR[a] SQL_WLONGVARCHAR[a] |
列字符长度 >= 数据的字符长度 列字符长度 < 数据的字符长度[a] 数据值不是有效的间隔文本 |
不适用 22001 22015 |
SQL_TINYINT[b] SQL_SMALLINT[b] SQL_INTEGER[b] SQL_BIGINT[b] SQL_NUMERIC[b] SQL_DECIMAL[b] |
单字段间隔的转换不会导致截断整个数字 转换导致截断整个数字 |
不适用 22003 |
SQL_INTERVAL_MONTH SQL_INTERVAL_YEAR SQL_INTERVAL_YEAR_TO_MONTH |
转换数据值时未截断任何字段 转换期间截断了一个或多个数据值的字段 |
不适用 22015 |
[a] 所有 C 间隔数据类型都可以转换为字符数据类型。
[b] 如果间隔结构中的类型字段是单个字段 (SQL_YEAR或SQL_MONTH) ,则可以将间隔 C 类型转换为任何精确的数值 (SQL_TINYINT、SQL_SMALLINT、SQL_INTEGER、SQL_BIGINT、SQL_DECIMAL或SQL_NUMERIC) 。
间隔 C 类型的默认转换为相应的年月间隔 SQL 类型。
从间隔 C 数据类型转换数据时,驱动程序会忽略长度/指示器值,并假定数据缓冲区的大小是间隔 C 数据类型的大小。 length/indicator 值在 SQLPutData 中的 StrLen_or_Ind 参数中传递,并在 SQLBindParameter 中使用 StrLen_or_IndPtr 参数指定的缓冲区中传递。 数据缓冲区使用 SQLPutData 中的 DataPtr 参数和 SQLBindParameter 中的 ParameterValuePtr 参数指定。