从 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 数据类型的精度。