Estoy trabajando en un diseño de base de datos PostgreSQL y me pregunto cómo almacenar mejor las marcas de tiempo.
Supuestos
Los usuarios en diferentes zonas horarias utilizarán la base de datos para todas las funciones CRUD.
He visto 2 opciones:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
Porque timestamp
enviaría una cadena que representaría la marca de tiempo exacta (UTC) para el momento INSERT.
Porque bigint
almacenaría exactamente lo mismo, pero en un formato numérico. (los problemas de zona horaria se manejan antes de que millis se entregue al servidor, por lo que siempre millis en UTC).
Una ventaja principal con el almacenamiento de a bigint
podría ser que sería más fácil de almacenar y recuperar, ya que pasar una marca de tiempo con el formato correcto es más complejo que un número simple (millis desde Unix Epoc).
Mi pregunta es cuál permitiría el diseño más flexible y cuáles podrían ser los escollos de cada enfoque.