postgresql 为什么Postgres中的“UTC-4”时区指向+04,而“UTC+4”时区指向-04?

pu82cl6c  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(200)

对我来说,将“UTC-4”与“-04”关联似乎更直观,反之亦然。
我在这里附上了一张图片,显示了在相应时区中选择当前时间时所得到的结果。

r8xiu3jd

r8xiu3jd1#

根据@a_horse_with_no_name评论中的链接,UTC-4/UTC+4是POSIX格式的时区名称,因此UTC的方向是相反的。换句话说,+从格林威治向西,-向东。您的选择是:
1.认识到这一点,并根据需要扭转你的手势。
1.使用已知的时区,例如America/Porto_Velho(-04)或Asia/Baku(+04)。但是,如果该时区的DST规则发生更改,则此偏移量可能会更改。
1.我现在在美国的PST

select current_time;
    current_time    
--------------------
 09:05:28.464408-08

 select (split_part((current_time at time zone 'UTC' - interval '4 hours')::varchar, '+', 1) || '-04')::timetz;
       timetz       
--------------------
 13:05:39.056446-04

select (split_part((current_time at time zone 'UTC' + interval '4 hours')::varchar, '+', 1) || '+04')::timetz;
       timetz       
--------------------
 21:05:50.624686+04

更新

POSIX时区说明的引用位置已更改为POSIX timezone,并且为:
偏移量字段指定与UTC的小时数,也可以指定分钟数和秒数。它们的格式为hh[:mm[:ss]],可以选择带有前导符号(+或-)。正号用于格林威治以西的区域。(请注意,这与PostgreSQL中其他地方使用的ISO-8601符号约定相反。)hh可以有一个或两个数字; mm和ss(如果使用)必须有两个。

相关问题