我在安装了 Postgresql 的 CentOS 6.x 上运行系统:
x86_64-unknown-linux-gnu 上的 PostgreSQL 9.0.11,由 GCC gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52) 编译,64 位
我现在面临的问题如下:
PostgreSQL 配置:
\#timezone = unknown # 实际上,默认为 TZ 环境
来自 psql 的会话配置:
select setting
from pg_settings
where name in ('TimeZone', 'timezone_abbreviations');
Israel
Default
---- - 操作系统时区是以色列: zdump -v /etc/localtime |grep 2013 /etc/localtime 2013 年 3 月 28 日星期四 23:59:59 UTC = 2013 年 3 月 29 日星期五 01:59:59 IST isdst=0 gmtoff=7200 /etc/localtime Fri Mar 29 00:00:00 2013 UTC = Fri Mar 29 03:00:00 2013 IDT isdst=1 gmtoff=10800 /etc/localtime 2013 年 10 月 26 日星期六 22:59:59 UTC = 2013 年 10 月 27 日星期日 01:59:59 IDT isdst=1 gmtoff=10800 /etc/localtime 2013 年 10 月 26 日星期六 23:00:00 UTC = 2013 年 10 月 27 日星期日 01:00:00 IST isdst=0 gmtoff=7200 ----
现在 - 根据 zdump 从夏季时区的转换应该在 10 月 27 日星期日 01:00:00 完成。当我跑
select '2013-09-06 00:00:00'::timestamptz it shows date in +03 timezone - 2013-09-06 00:00:00+03
但是当我跑步时
select '2013-09-08 00:00:00'::timestamptz
它在 +02 时区显示日期 -2013-09-06 00:00:00+02
但它应该在 +03 中显示它,因为时区转换仅适用于2013-09-06 00:00:00'::timestamptz
10 月 27 日星期日 01:00:00。
所以有2个问题:
- postgresql 如何保持时区转换的日期以及如何检查当前值。
- 我该如何解决这个问题。