Estou trabalhando em um design de banco de dados PostgreSQL e estou me perguntando a melhor forma de armazenar registros de data e hora.
Suposições
Usuários em fusos horários diferentes usarão o banco de dados para todas as funções CRUD.
Eu olhei para duas opções:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
Pois timestamp
eu enviaria uma string que representaria o registro de data e hora 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 no UTC.)
Uma das principais vantagens do armazenamento de um bigint
seria que seria mais fácil armazenar e recuperar, pois a passagem de um carimbo de data / hora formatado corretamente é mais complexa do que um número simples (milésimos desde o Unix Epoc).
Minha pergunta é qual deles permitiria o design mais flexível e quais seriam as armadilhas de cada abordagem.