gpt4 book ai didi

postgresql - 在 Postgresql 中,如何使用 "At Time Zone"取消反转时区偏移量

转载 作者:行者123 更新时间:2023-11-29 11:36:29 25 4
gpt4 key购买 nike

我正在努力思考 Postgresql 时区,但我似乎无法弄清楚这一点。 EST 是美国的“东部标准时间”,通常为 UTC-5 .

示例 1:基础测试

select '08/31/2011 12:00 pm EST'::timestamptz  at time zone 'EST';
timezone
---------------------
2011-08-31 12:00:00

示例 2:偏移量为 +5

select '08/31/2011 12:00 pm EST' at time zone '+5';
timezone
---------------------
2011-08-31 12:00:00

例子3:偏移量为-5

 select '08/31/2011 12:00 pm EST' at time zone '-5';
timezone
---------------------
2011-08-31 22:00:00

显然,一切都是倒退的。 EST 又是... supposed to be UTC-5 .现在,我确实搜索了文档,它确实解释了事情是“POSIX”,which is backwards . (正偏移量在 GMT 以西,而负偏移量在 GMT 以东)。

但是,我该如何解决这个问题?在应用程序层,我总是可以将 + 号反转为 - 号,但在我看来这对我来说有点困惑。因此,我的最终问题。

在数据库层(Postgres),有没有办法使用“At Time Zone”语法使 GMT-5 对应于 EST?还是我只需要在应用层反转所有内容?

最佳答案

使用 documentation 中所写的间隔数据类型获得正确的行为:

In these expressions, the desired time zone zone can be specified either as a text string (e.g., 'PST') or as an interval (e.g., INTERVAL '-08:00').

基础测试:

SELECT '08/31/2011 12:00 pm EST'::timestamptz AT TIME ZONE 'EST';
timezone
---------------------
2011-08-31 12:00:00
(1 row)

时区信息:

SELECT * FROM pg_timezone_abbrevs WHERE abbrev LIKE 'EST';
abbrev | utc_offset | is_dst
--------+------------+--------
EST | -05:00:00 | f
(1 row)

适当的偏移量 -5:

SELECT '08/31/2011 12:00 pm EST'::timestamptz AT TIME ZONE '-05:00'::interval;
timezone
---------------------
2011-08-31 12:00:00
(1 row)

适当的偏移 +5:

SELECT '08/31/2011 12:00 pm EST'::timestamptz AT TIME ZONE '+05:00'::interval;
timezone
---------------------
2011-08-31 22:00:00
(1 row)

关于postgresql - 在 Postgresql 中,如何使用 "At Time Zone"取消反转时区偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com