将MySQL Datetime转换为C ++ std :: time_t

时间:2016-06-29 13:24:30

标签: c++ mysql datetime time-t

我陷入困境,真的希望你能帮助我。我喜欢将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->???
}

不知何故,我的大脑没有完成最后一步。请帮我。 非常感谢你!

2 个答案:

答案 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");