从 SQL 到 C:时间戳

时间戳 ODBC SQL 数据类型的标识符如下:

  • SQL_TYPE_TIMESTAMP

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

C 类型标识符 测试 *TargetValuePtr *StrLen_or_IndPtr SQLSTATE
SQL_C_CHAR BufferLength> 字符字节长度

20 <= BufferLength<= 字符字节长度

BufferLength< 20
数据

截断的数据[b]

未定义
数据长度(以字节为单位)

数据长度(以字节为单位)

未定义
不适用

01004

22003
SQL_C_WCHAR BufferLength> 字符长度

20 <= BufferLength<= 字符长度

BufferLength< 20
数据

截断的数据[b]

未定义
以字符为单位的数据长度

以字符为单位的数据长度

未定义
不适用

01004

22003
SQL_C_BINARY 数据 <字节长度 = BufferLength

数据 >BufferLength 的字节长度
数据

未定义
数据长度(以字节为单位)

未定义
不适用

22003
SQL_C_TYPE_DATE 时间戳的时间部分为零[a]

时间戳的时间部分为非零[a]
数据

截断的数据[c]
6[f]

6[f]
不适用

01S07
SQL_C_TYPE_TIME 时间戳的小数秒部分为零[a]

时间戳的小数秒部分为非零[a]
Data[d]

截断的数据[d], [e]
6[f]

6[f]
不适用

01S07
SQL_C_TYPE_TIMESTAMP 时间戳的小数秒部分未截断[a]

时间戳的小数秒部分被截断[a]
Data[e]

截断的数据[e]
16[f]

16[f]
不适用

01S07

[a] 对于此转换,将忽略 BufferLength 的值。 驱动程序假定 *TargetValuePtr 的大小是 C 数据类型的大小。

[b] 截断时间戳的小数秒。

[c] 截断时间戳的时间部分。

[d] 忽略时间戳的日期部分。

[e] 时间戳的小数秒部分将被截断。

[f] 这是相应 C 数据类型的大小。

当时间戳 SQL 数据转换为字符 C 数据时,生成的字符串位于“yy-mm dd hh:mm-ss[中。f...]“格式,最多可以使用 9 位数字的小数秒。 此格式不受 Windows 国家/地区设置的影响。 (除了小数点和小数秒外,必须使用整个格式,而不考虑时间戳 SQL 数据类型的精度。