我陷入困境,真的希望你能帮助我。我喜欢将MySQL DATETIME
字段转换为C ++ std::time_t
变量。我的数据库如下所示:
CREATE TABLE data(
id INTEGER AUTO_INCREMENT UNIQUE,
path VARCHAR(1000),
acquisitionDate DATETIME
);
我正在尝试将acquisitionDate
中的值保存到std::time_t
类型的c ++变量中。
经过一些网络搜索,我了解到我必须在MySQL语句中使用UNIX_TIMESTAMP
。但是,我不明白如何实际使用它。我可以生成查询并收到sql::ResultSet
:
std::unique_ptr<sql::Statement> stmt(mConnection->createStatement());
std::string query="SELECT id, path, UNIX_TIMESTAMP(acquisitionDate) FROM data WHERE id = 1";
std::unique_ptr<sql::ResultSet> res(stmt->executeQuery(query));
但我不明白如何将实际字段值转换为std::time_t
变量
if(res->next())
{
std::time_t acquisitionDate = res->getInt("acquisitionDate");
std::time_t acquisitionDate = res->???
}
不知何故,我的大脑没有完成最后一步。请帮我。 非常感谢你!
答案 0 :(得分:1)
我也明白可以通过以下方式访问输出的字段:
std::time_t acquisitionDate = res->getInt("UNIX_TIMESTAMP(acquisitionDate)");
或者SQL语句可以重命名该字段:
SELECT UNIX_TIMESTAMP(acquisitionDate) AS foo FROM data WHERE id = 1
然后
std::time_t acquisitionDate = res->getInt("foo");
但是,在你有正确的字段名称后,施放也应该是一个好主意:
std::time_t acquisitionDate = static_cast<std::time_t>(res->getInt("foo"));
答案 1 :(得分:0)
投下它
std::time_t acquisitionDate = (std::time_t)res->getInt("acquisitionDate");