c++ - 在类/对象中存储日期和时间的最佳做法是什么?
问题描述
最近我要连接到 PostgreSQL,我需要在我的对象中存储日期/时间以传递给查询以插入和更新一些表。但是 C++ 中没有明确的方法来存储和检索日期/时间。任何意见?
解决方案
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 字节),否则,您的时间将被限制在任何一方,并且您将失去精度/获得意外时间。
推荐阅读
- angular7 - 如何在 angular7 的 html 模板中实现订阅
- oracle - Oracle 应用程序性能问题
- java - 搜索时忽略空格 - RESTHighLevelClient Java
- docker - 从 docker 运行 docker 时权限被拒绝 /var/run/docker.sock
- tensorflow2.0 - 无法使用 tensorflow 2.0 保存模型
- cpu-architecture - 2 位分支预测器的状态
- flutter - 如何转换列表
在颤动中输入 int - java - 打开 MySQL 连接
- c# - 从转换器返回一个可空的布尔值到 XAML
- c# - 如何使用 c# winforms 将参数传递给 powershell 脚本?