Estou trabalhando em um projeto de banco de dados PostgreSQL e estou querendo saber a melhor forma de armazenar carimbos de data/hora.
Suposições
Usuários em fusos horários diferentes usarão o banco de dados para todas as funções CRUD.
Analisei 2 opções:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
Pois timestamp
eu enviaria uma string que representaria o timestamp exato (UTC) para o momento INSERT.
Pois bigint
eu armazenaria exatamente a mesma coisa, mas em um formato numérico. (os problemas de fuso horário são tratados antes que o millis seja entregue ao servidor, portanto, sempre o millis em UTC.)
Uma vantagem principal de armazenar a bigint
poderia ser que seria mais fácil armazenar e recuperar, pois passar um timestamp corretamente formatado é mais complexo do que um simples número (millis desde o Unix Epoc).
Minha pergunta é qual deles permitiria o design mais flexível e quais poderiam ser as armadilhas de cada abordagem.