gpt4 book ai didi

PostgreSQL:设置时区格式

转载 作者:行者123 更新时间:2023-11-29 13:02:07 33 4
gpt4 key购买 nike

那些给出了正确的结果:

SET TIME ZONE '-04';SET TIME ZONE INTERVAL '-04:00';

SELECT current_setting('TIMEZONE'), now();
current_setting | now
-----------------+-------------------------------
-04:00:00 | 2014-10-29 06:45:35.694796-04

虽然那些是倒置的:

设置时区 '-04:00';

SELECT current_setting('TIMEZONE'), now();
current_setting | now
-----------------+-------------------------------
-04:00 | 2014-10-29 14:52:25.322796+04

设置时区 '-04:00:00';

SELECT current_setting('TIMEZONE'), now();
current_setting | now
-----------------+-------------------------------
-04:00:00 | 2014-10-29 14:52:33.591539+04

我做错了什么?

最佳答案

SET TIME ZONE有3种形式(实际上是4种,有两个特殊值:LOCAL & DEFAULT);它可以接受:

  • 文本中的时区缩写,
  • 数字中的时区偏移量(偏移量实际上以小时为单位),
  • 间隔中的时区偏移

此外,需要提及的是,当您提供无效的时区缩写时,SET 语句将 silently accept bogus input :

One should be wary that the POSIX-style time zone feature can lead to silently accepting bogus input, since there is no check on the reasonableness of the zone abbreviations.

检查这个SQLFiddle ,在那里你可以看到:

  • SET TIME ZONE '-04' 将时区偏移设置为数字(以小时为单位)
  • SET TIME ZONE '-04:00' 将尝试使用其缩写设置时区,但会默默地失败
  • SET TIME ZONE '-04:00:00' 也将尝试使用其缩写设置时区,但会默默地失败,但您会明白该语句是成功的,因为获取当前设置将为您提供伪造的时区缩写,这也可以被解释为有效的缩写(但事实并非如此)。

始终使用直接数字,或 INTERVAL 文字与 SET TIME ZONE,或者最好:使用有效的时区缩写,例如 America/New_York.

关于PostgreSQL:设置时区格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26628815/

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