如何在ODBC本机客户端中获取SQL Server DateTime字段
How to get SQL Server DateTime field in ODBC native client
我有SQL Server表:
CREATE TABLE [dbo].[Table1](
[rec_id] [int] IDENTITY(1,1) NOT NULL,
[id] [int] NOT NULL,
[date] [datetime] NOT NULL,
[ps] [varchar](200) NULL
) ON [PRIMARY]
我通过一个代码获取数据:
status = SQLExecDirect(statement, (SQLWCHAR*)TEXT("SELECT * FROM [DBNAME].[dbo].[Table1]"), SQL_NTS);
cout << "SQLExecDirect returned " << status << "rn";
if (status == SQL_SUCCESS_WITH_INFO || status == SQL_SUCCESS)
{
int rec_id;
int id;
char date[64];
char ps[201] = { 0 };
while (SQLFetch(statement) == SQL_SUCCESS)
{
SQLGetData(statement, 1, SQL_C_ULONG, &rec_id, 0, NULL);
SQLGetData(statement, 2, SQL_C_ULONG, &id, 0, NULL);
SQLGetData(statement, 3, SQL_C_CHAR, date, 64, NULL);
SQLGetData(statement, 4, SQL_C_CHAR, ps, 201, &len);
cout << rec_id << " " << id << " " << date << " " << ps << " " << len << endl;
}
}
cout << "Connected;";
cin.get();
SQLDisconnect(connectHandle);
但我在输出中得到了date
字段作为char数组:2014-01-01 00:00:00.000如何获得这个字段,例如,FILETIME格式或其他更方便的C++数据类型?谢谢
对于日期类型,应该使用SQL_C_date或SQL_C_TIMESTAMP。示例:
TIMESTAMP_STRUCT ts;
SQLLEN len;
SQLGetData(hstmt, 3, SQL_C_TIMESTAMP, &ts, sizeof(ts), &len);
printf("Date: %d-%d-%d %d:%d:%d.%d (%ld)n",
ts.year, ts.month,ts.day, ts.hour, ts.minute, ts.second, ts.fraction, len);
希望得到帮助。
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- Qt/SQL - 从 QSqlQuery exec Stored Procedure 获取列类型和名称?
- 如何在 sql 查询中获取 soci::rowset<std::string>
- 如何从 Oracle 数据库中获取 qt 中 SQL 查询的传输字节大小?
- 从适用于 SQL Server 的 Azure 帐户获取 IP
- C++使用sql连接器获取元数据,而不需要太多数据
- 无法按列名从SQL表中获取数据.给出错误.只能通过列数来做同样的事情
- 获取索引信息的问题-SQL Server
- 如何使用C++获取SQL数据库的总大小
- 如何在ODBC本机客户端中获取SQL Server DateTime字段
- 如何将自动递增的主键的数据从 sql 服务器获取到我的数据网格视图
- 在 SQL Server 中插入'€'符号并获取'?'
- Qt/SQL - 从没有记录的表中获取列类型和名称
- C++SQL ODBC:从表中获取行
- 从Oracle PL/SQL中获取数据到主机阵列
- SQL解析器库-从查询中获取表名
- 如何使用 ODBC (C++) 从 MS SQL 获取字符串中的 nvarchar