微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PostgreSQL时区偏移量在分钟部分为负数`(-02:-30)`

如何解决PostgreSQL时区偏移量在分钟部分为负数`(-02:-30)`

尝试从 pg_timezone_names 获取所有时区名称和偏移值,但很少有在分钟部分带有负号的偏移量。

这里是查询

select name,to_char(utc_offset,'HH24:MI' ),utc_offset
from pg_timezone_names
WHERE  name LIKE '%Canada/Newfoundland%'
ORDER  BY name;

结果是

enter image description here

如结果所示,偏移量 (-02:-30)一个负号。预期结果将是 -02:30。 Postgres 中是否有任何可能的方法来格式化这样的偏移值?

解决方法

为什么不呢?:

select name,utc_offset::varchar,utc_offset 
from pg_timezone_names
WHERE  name LIKE '%Canada/Newfoundland%'
ORDER  BY name;
        name         | utc_offset | utc_offset 
---------------------+------------+------------
 Canada/Newfoundland | -02:30:00  | -02:30:00
(1 row)

就您的目的而言,to_char() 距离结果很远。

,

既然结果集的长度总是一样的,为什么不直接用 substringlength 截断分钟?

SELECT name,substring(utc_offset::text,1,length(utc_offset::text)-3),utc_offset
FROM pg_timezone_names
WHERE  name LIKE '%Canada/Newfoundland%'
ORDER  BY name;

           name            | substring | utc_offset 
---------------------------+-----------+------------
 Canada/Newfoundland       | -02:30    | -02:30:00
 posix/Canada/Newfoundland | -02:30    | -02:30:00
(2 rows)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。