从 C 到 SQL:时间戳

时间戳 ODBC C 数据类型的标识符为:

SQL_C_TYPE_TIMESTAMP

下表显示了可将时间戳 C 数据转换为的 ODBC SQL 数据类型。 有关表中的列和术语的说明,请参阅 将数据从 C 转换为 SQL 数据类型

SQL 类型标识符 测试 SQLSTATE
SQL_CHAR

SQL_VARCHAR

SQL_LONGVARCHAR
列字节长度 >= 字符字节长度

19 <= 列字节长度 < 字符字节长度

列字节长度 < 19

数据值不是有效的时间戳
不适用

22001

22001

22008
SQL_WCHAR

SQL_WVARCHAR

SQL_WLONGVARCHAR
列字符长度 >= 数据的字符长度

19 <= 列字符长度 < 数据字符长度

列字符长度 < 19

数据值不是有效的时间戳
不适用

22001

22001

22008
SQL_TYPE_DATE 时间字段为零

时间字段为非零

数据值不包含有效日期
不适用

22008

22007
SQL_TYPE_TIME 小数秒字段为零[a]

小数秒字段为非零[a]

数据值不包含有效时间
不适用

22008

22007
SQL_TYPE_TIMESTAMP 小数秒字段不会被截断

小数秒字段被截断

数据值不是有效的时间戳
不适用

22008

22007

[a] 将忽略时间戳结构的日期字段。

有关SQL_C_TIMESTAMP结构中哪些值有效的信息,请参阅 本附录前面的 C 数据类型

当时间戳 C 数据转换为字符 SQL 数据时,生成的字符数据位于“yy-mm dd hh:mm-ss[中。f...]“ 格式。

驱动程序在从时间戳 C 数据类型转换数据时忽略长度/指示器值,并假定数据缓冲区的大小是时间戳 C 数据类型的大小。 长度/指示器值在 SQLPutData 中的 StrLen_or_Ind 参数和 SQLBindParameter 中的 StrLen_or_IndPtr 参数指定的缓冲区中传递 使用 SQLPutData 中的 DataPtr 参数和 SQLBindParameter 中的 ParameterValuePtr 参数指定数据缓冲区。