Какова наилучшая практика для хранения даты и времени в классе / объекте? - PullRequest
0 голосов
/ 09 декабря 2018

Недавно я собираюсь подключиться к PostgreSQL, и мне нужно сохранить дату / время в моем объекте, чтобы передать запрос на вставку и обновить некоторую таблицу.но в c ++ нет ясного способа хранить и получать дату / время.любой комментарий?

1 Ответ

0 голосов
/ 22 марта 2019

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`

что-то похожее на этот ответ: Получение точного времени выполнения в C ++ (микросекунды)

Затем отправьте ваш объект / запись в PostGRESQL,при извлечении в микросекундах настройте точность /1000 for milliseconds и т. д.

Просто не забудьте синхронизировать длину метки времени PostgreSQL и C ++ (например, 8 байтов - 8 байтов с каждой стороны), в противном случае ваше время будет пороговымсторона, и вы потеряете точность / получите неожиданное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...