首页 > 解决方案 > 在类/对象中存储日期和时间的最佳做法是什么?

问题描述

最近我要连接到 PostgreSQL,我需要在我的对象中存储日期/时间以传递给查询以插入和更新一些表。但是 C++ 中没有明确的方法来存储和检索日期/时间。任何意见?

标签: c++postgresqldatedatetimetime

解决方案


PostgreSQL TimeFormat 9+ 版本 https://www.postgresql.org/docs/9.1/datatype-datetime.html

这是一种精确的8byte int(64 bit)时间格式microsecond,没有时区的 UTC(从表格顶部开始)。

创建表时,您可以通过 PostgreSQL 对记录进行时间戳记current_timestamp,或者将其作为 integer 插入表中64bit microsecond format。因为 PostgreSQL 有多种时间格式,你应该从表中决定任何你想要的格式

PostgreSQL 方法 CREATE、INSERT、RETRIEVE

"CREATE TABLE example_table(update_time_column TIMESTAMP DEFAULT CURRENT_TIMESTAMP)"

"INSERT INTO example_table(update_time_column) VALUES update_time_column=CURRENT_TIMESTAMP"

"SELECT (EXTRACT(epoch FROM update_time_column)*1000000) FROM example_table"

C++ 方法

auto/int64_t cppTime = get64bitMicrosecondFormat from some library`

类似于此答案的内容:在 C++ 中获得准确的执行时间(微秒)

然后将您的对象/记录推送到 PostGRESQL,在微秒内检索时,调整精度/1000 for milliseconds等。

只是不要忘记同步 PostgreSQL 和 C++ 时间戳长度(例如,每边 8 字节 - 8 字节),否则,您的时间将被限制在任何一方,并且您将失去精度/获得意外时间。


推荐阅读