【发布时间】:2020-01-26 17:37:11
【问题描述】:
好的,所以我一直对时区感到困惑。我正在好转,但还没有。各位大神能指教一下吗?
上下文:我从前端收到 UTC 时间。例如,要表示日期 1 September 2019,我会得到 2019-08-31 22:00:00Z(我们在布鲁塞尔 DST,因此有 2 小时的差异)。
从那个日期开始,我需要在此之前生成一系列 6 个月。这就是March April May June July August。
我设法找到了解决方案,说实话有点不走运。我仍然不确定我是否了解以下发生的细节:
database=> show timezone;
TimeZone
----------
UTC
(1 row)
database=> select generate_series(
('2019-08-31 22:00:00Z'::timestamp at time zone 'Europe/Brussels')::date - '6 month'::interval,
('2019-08-31 22:00:00Z'::timestamp at time zone 'Europe/Brussels')::date - '1 month'::interval,
'1 month'::interval
);
generate_series
---------------------
2019-02-28 00:00:00
2019-03-28 00:00:00
2019-04-28 00:00:00
2019-05-28 00:00:00
2019-06-28 00:00:00
2019-07-28 00:00:00
(6 rows)
database=> select generate_series(
('2019-08-31 22:00:00Z' at time zone 'Europe/Brussels')::date - '6 month'::interval,
('2019-08-31 22:00:00Z' at time zone 'Europe/Brussels')::date - '1 month'::interval,
'1 month'::interval
);
generate_series
---------------------
2019-03-01 00:00:00
2019-04-01 00:00:00
2019-05-01 00:00:00
2019-06-01 00:00:00
2019-07-01 00:00:00
2019-08-01 00:00:00
如果我使用::timestamp,为什么会得到错误的结果?
【问题讨论】:
标签: postgresql timezone utc