我有一个包含 DATETIME 字段的 SQL 表。我正在使用 C++ 中的表。当我填写该行时,我需要提交一个日期时间。获得它的最简单方法是什么?
使用 ubuntu 并需要它与 Qt 一起工作,所以最好不要添加外部库,如 boost::。
最佳答案
我曾经遇到过类似的情况,所以我自己写了一个DateTime
类。
在 pastebin 上:
如果您使用 MySQL Connector/C++
, 那么我相信这个图书馆试图模仿 JDBC
来自 java 。 Java 中 java.sql
包中的类定义在 C++ 中的 sql
命名空间中。
JDBC 有一个 java.sql.Timestamp
类,因此 C++ 库应该有一个 sql::Timestamp
类。
然而,MySQL 5.6 文档显示有 feature requests for MySQL Connector/C++让他们将 JDBC
中的 Date
、Time
和 Timestamp
类型添加到 C++ 库中。所以它们可能还不可用。
目前,the answers to this question建议您应该使用 std::string
来获取和设置 Timestamp
字段。
插入:
std::string ts_field = "2012/10/26 07:15:00";
pstmt = con->prepareStatement("INSERT INTO date_table(date_field) VALUES (?)");
pstmt->setString(1, ts_field);
pstmt->execute();
delete pstmt;
选择:
pstmt = con->prepareStatement("SELECT date_field FROM date_table");
res = pstmt->executeQuery();
while (res->next())
{
std::string ts_field = res->getString("date_field");
cout << ts_field << endl;
}
delete res;
delete pstmt;
如果您想在程序中操作这些Timestamp
。使用这些 std::string
对象创建 DateTime
对象并使用我附加到 pastebin
上的类将是微不足道的。
如果您对 MySQL Connector/C++
不太了解,您可以考虑切换到 MySQL++
.这个图书馆肯定有一个DateTime
类型。
关于c++ - 在 C++ 中获取 DATETIME 戳的最简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13078756/