Eri*_*ang 6 sql postgresql timezone datetime types
在PostgreSQL,数据类型timestamp和timestamp with timezone都使用8个字节.
我的问题是:
timestamp with timezone
类型中,以及在读取类型时如何解析?Erw*_*ter 15
这只是一种误解,源于有点误导性的类型名称.时区本身根本不存储.它只是作为偏移来计算实际存储的UTC时间戳.这完全符合SQL标准.
只是存储时间点,没有区域信息.这就是为什么64位信息就足够了.根据会话的当前时区设置向客户端显示时间戳.
细节:
此外,由于Jon提到它,time with time zone在SQL标准中定义并因此在Postgres中实现,但不建议使用它:
time with time zone由SQL标准定义,但该定义显示的属性导致可疑的有用性.
这是一种固有的模糊类型,无法正确处理DST.
查看文档:
timestamp with timezone 它可以在 8 个字节内正确编码。只是时间戳需要 64 位,因为 log 2 (298989 * 365 * 24 * 60 * 60 * 1000000) 大于 63。请注意,time with time zone需要12个字节,具有相同的精度但范围为一天。请参阅 Erwin 的回答以解释它实际上是如何设法存储在 8 个字节中的——它应该被称为“没有时区的时间戳,但存储在 UTC 中并转换为本地时区以进行显示”。哎呀。
| 归档时间: |
|
| 查看次数: |
4418 次 |
| 最近记录: |