将 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"));
我遇到了一个问题,真的希望你能帮助我。我喜欢将 MySQL DATETIME
字段转换为 C++ std::time_t
变量。我的数据库如下所示:
CREATE TABLE data(
id INTEGER AUTO_INCREMENT UNIQUE,
path VARCHAR(1000),
acquisitionDate DATETIME
);
我正在尝试将 acquisitionDate
中的值保存到 std::time_t
.
经过一些网络搜索,我了解到我必须在我的 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"));