我正在研究PostgreSQL数据库设计,我想知道如何最好地存储时间戳。
假设条件
不同时区的用户将数据库用于所有CRUD功能。
我看了两个选项:
timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC')
bigint NOT NULL DEFAULT
因为timestamp
我会发送一个字符串,该字符串代表INSERT时刻的确切(UTC)时间戳。
因为bigint
我会以数字格式存储完全相同的内容。(时区问题是在将毫秒移交给服务器之前处理的,因此始终在UTC中使用毫秒。)
存储a的一个主要优点bigint
是可以更容易存储和检索,因为传递正确格式的时间戳比简单的数字(自Unix Epoc以来的毫秒数)要复杂得多。
我的问题是,哪种方法可以进行最灵活的设计,以及每种方法的陷阱是什么?