将 MySQL 日期时间转换为 C++ std::time_t

Convert MySQL Datetime to C++ std::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->???
}

不知怎么的,我的大脑没有理解这最后一步。请帮我。 非常感谢!

直接施放

std::time_t acquisitionDate = (std::time_t)res->getInt("acquisitionDate");

我还了解到可以通过以下方式访问输出的字段:

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