数据库 – Postgres时间戳
我们正在讨论在postgres中存储时间戳的最佳方法.目前,所有时间戳都存储为00,并且我们有一个与每个客户关联的时区.我们查找时区并转换发生事件的时间,这会增加复杂性,因为我们需要进行更多连接和更复杂的查询.
另一种方法是连接到Postgres并设置连接的时区,它将所有时间都更改为该时区. 我的问题是在ANZ有4-5个时区.当我们尝试开发票时,我们需要知道某些交易发生在哪一天,并且在三个时区之间没有完美的解决方案. 我想在时间戳中包含时区以使其更容易 – TIMESTAMP’1999-01-15 8:00:00 -8:00′ 我的印象是这是最好的做法,但有些人说这是一个坏主意.我们将为ANZ的客户提供准确的发票,最佳解决方案和最优雅的解决方案是什么? 干杯 解决方法这里没有防弹解决方案.我的第一个建议:永远不要依赖服务器的默认时区. 我的第二个建议是:根据数据的(主要)语义在timestamp-timestamptz之间进行选择. 更详细: >使用TIMESTAMP WITH TIMEZONE(timestamptz)存储主要与“物理”时间相关的事件,您主要感兴趣的是查询事件1是否在事件2之前(无论时区如何),还是计算时间间隔(在“物理单位“,例如,秒;不是”民用“单位,如天 – 月等).典型的例子是记录创建/修改时间 – 通常用“Timestamp”这个词来表示. 第二个选项使您更容易查询,例如“在2013-01-20’日发生的所有事件”(在每个相应的区域/国家/时区中) – 但是查询“所有事件”更加困难在参考事件之前(物理上)“(除非我们知道它们在同一时区).你选. 如果您需要完整的东西,这两者都不够,您需要将时区或偏移量存储在附加字段中.另一个选项,浪费几个字节,但对查询更有效,是存储两个字段. 另见this answer. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |