Я работаю над дизайном БД PostgreSQL и мне интересно, как лучше хранить временные метки.
Предположения
Пользователи в разных часовых поясах будут использовать базу данных для всех функций CRUD.
Я посмотрел на 2 варианта:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
Поскольку timestamp
я послал бы строку, которая представит точную (UTC) метку времени для момента ВСТАВКИ.
Ибо bigint
я бы сохранил то же самое, но в числовом формате. (Проблемы с часовым поясом обрабатываются до того, как миллис будет передан на сервер, поэтому всегда миллис в UTC.)
Одним из основных преимуществ хранения a bigint
может быть то, что его будет проще хранить и извлекать, поскольку передача правильно отформатированной временной метки является более сложной, чем простое число (миллис со времен Unix Epoc).
Мой вопрос заключается в том, какой из них позволил бы создать наиболее гибкую конструкцию и какие могут быть подводные камни каждого подхода.