我正在研究 PostgreSQL 数据库设计,我想知道如何最好地存储时间戳。
不同时区的用户将使用数据库执行所有 CRUD 功能。
我查看了 2 个选项:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
因为timestamp
我会发送一个字符串来表示 INSERT 时刻的确切(UTC)时间戳。
因为bigint
我会存储完全相同的东西,但以数字格式存储。(时区问题是在将毫秒移交给服务器之前处理的,因此总是以 UTC 为单位的毫秒。)
存储 a 的一个主要优点bigint
可能是它更容易存储和检索,因为传递正确格式的时间戳比简单的数字(自 Unix Epoc 以来的毫秒)更复杂。
我的问题是哪种方法可以实现最灵活的设计,以及每种方法可能存在哪些缺陷。