最近,我要连接到PostgreSQL,我需要将日期/时间存储在对象中,以传递给查询以进行插入和更新某些表。 但是在c ++中没有明确的方法来存储和检索日期/时间。 有何评论?
答案 0 :(得分:0)
PostgreSQL TimeFormat 9+版本 https://www.postgresql.org/docs/9.1/datatype-datetime.html
这是一种8byte int(64 bit)
精度的microsecond
时间格式,没有时区的UTC(从表顶部开始)。
创建表时,可以通过PostgreSQL current_timestamp
为记录加上时间戳,也可以将整数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`
类似于以下答案:Getting an accurate execution time in C++ (micro seconds)
然后将您的对象/记录推送到PostGRESQL,以毫秒为单位检索时,调整精度/1000 for milliseconds
等。
请不要忘记同步PostgreSQL和C ++时间戳的长度(例如,每侧8字节-8字节),否则,您的时间将受到限制,并且您将失去精度/获得意外的时间。