如何使用 libpqxx 正确 select 日期字段?

How to correctly select date field using libpqxx?

我正在尝试 select 使用 libpqxx 和 C++ 从 PostgreSQL 数据库中获取日期字段。

我会使用这个代码,但我不知道它是否合法。我在文档中搜索过,但没有任何记录方式。

using time_point = std::chrono::steady_clock::time_point;

pqxx::work txn(c);
auto&& rst = txn.exec("SELECT date FROM table");

for(auto&& row : rst)
  time_point date = row[0].as<time_point>();

请问这样可以吗?你知道更好的选择吗?

我想要日期时间和时间字段。请问有什么不同吗?

谢谢。

--

field 类型的文档:https://libpqxx.readthedocs.io/en/6.4/a01063.html#a3a55f6b44040b68e70382d9db7dea457

JadeMatrix 在 Github 上的回答:

field.as<>() 将适用于存在 pqxx::string_traits<> 特化的任何类型。 libpqxx 支持 std::string、内置数字(int 等),也许还有一些我不记得了。 不幸的是,默认情况下缺少对 std::chrono:: 类型的支持。您可以实现自己的,但请注意它们仅适用于 TIMESTAMP WITHOUT TIME ZONEDATETIME WITHOUT TIME ZONEINTERVAL。要正确支持... WITH TIME ZONE 您将需要 Howard Hinnant 的日期库,这就是我所使用的(有人谈论将其添加到标准库中)。 如果你愿意,我可以分享我的代码,它依赖于解析 Postgres date/time 字符串(ISO 8601 格式)的日期功能。