数据库 – 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. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在SQL Server 2005所有表中搜索某个指定列的方法
- sql-server – 在SQL Server 2008 R2 Express中发送SMTP邮件
- 实体框架 – 更新到EF 6.0.0-alpha后,无法使用EF迁移更新数
- SQL Server中通过reverse取某个最后一次出现的符号后面的内
- 数据库设计 – 一个表中有数十亿条记录?
- MySQL 5.7.14 net start mysql 服务无法启动-“NET HELPMSG
- LinqPad在每个表的末尾添加了一个S.
- 数据库 – 我可以要求Postgresql忽略事务中的错误
- SQL Server 2005 定时执行SQL语句的方法
- SQL Server 分组统计查询(按月、小时分组)
