如何使用 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 ZONE
、DATE
、TIME WITHOUT TIME ZONE
和 INTERVAL
。要正确支持... WITH TIME ZONE
您将需要 Howard Hinnant 的日期库,这就是我所使用的(有人谈论将其添加到标准库中)。
如果你愿意,我可以分享我的代码,它依赖于解析 Postgres date/time 字符串(ISO 8601 格式)的日期功能。
我正在尝试 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 ZONE
、DATE
、TIME WITHOUT TIME ZONE
和 INTERVAL
。要正确支持... WITH TIME ZONE
您将需要 Howard Hinnant 的日期库,这就是我所使用的(有人谈论将其添加到标准库中)。
如果你愿意,我可以分享我的代码,它依赖于解析 Postgres date/time 字符串(ISO 8601 格式)的日期功能。