gpt4 book ai didi

sql - 如何返回 DBTIMEZONE 名称

转载 作者:行者123 更新时间:2023-12-02 20:49:07 26 4
gpt4 key购买 nike

我跑了

select dbtimezone, sessiontimezone
from dual

分别返回 -04:00 和 -06:00。

我也跑了

select
TZ_OFFSET('US/Eastern') "EST_offset",
TZ_OFFSET('America/Denver') "Mtn Time offset"
from dual

返回相同的数字。

我的问题是,如何将“-04:00”转换为“美国/东部”之类的内容?是否有一个我忽略的简单内置函数,或者我是否需要编写自己的 CASE 语句来创建这种关系?

谢谢!

最佳答案

首先,为什么喜欢获取DBTIMEZONE?我无法想象为什么有人需要它。 DBTIMEZONE 仅与 TIMESTAMP WITH LOCAL TIME ZONE 列相关,它定义存储格式。

我假设您对数据库服务器操作系统的时区更感兴趣。您可以通过以下方式选择

SELECT TO_CHAR(SYSTIMESTAMP, 'TZR') FROM dual;

与您的实际问题相关:不,这是不可能的。时区 -04:00 与时区 美国/东部 不同。还有许多其他时区区域的 UTC 偏移量也为 4 小时,请参阅此查询:

SELECT DISTINCT tzname
FROM V$TIMEZONE_NAMES
WHERE TRIM(TRAILING CHR(0) FROM TZ_OFFSET(tzname)) = '-04:00';

TZNAME
=========================================
America/Anguilla
America/Aruba
America/Asuncion
America/Boa_Vista
America/Caracas
America/Cuiaba
America/Curacao
America/Detroit
America/Fort_Wayne
America/Guadeloupe
America/Indiana/Indianapolis
America/Indiana/Marengo
America/Indiana/Vevay
America/Indianapolis
America/Iqaluit
America/Kentucky/Louisville
America/La_Paz
America/Louisville
America/Manaus
America/Martinique
America/Montreal
America/Montserrat
America/New_York
America/Porto_Velho
America/Puerto_Rico
America/Santiago
America/St_Thomas
America/Thunder_Bay
America/Tortola
America/Virgin
Brazil/West
Canada/Eastern
Chile/Continental
EST5EDT
Etc/GMT+4
US/East-Indiana
US/Eastern
US/Michigan

-04:00US/Eastern 之间的主要区别是:US/Eastern 等时区区域应用夏令时, -04:00 没有。

-04:00 始终比 UTC 晚 4 小时,无论夏季还是冬季。

Documentation for TZ_OFFSET表示“根据语句执行的日期返回与输入值相对应的时区偏移量

因此,如果您两周前执行 TZ_OFFSET('US/Eastern'),结果将是 -05:00

您可以将数据库服务器操作系统的时区更改为美国/东部等值。但是,我不知道 TO_CHAR(SYSTIMESTAMP, 'TZR') 是否始终返回类似 -04:00 的值。 -05:00 或区域名称。

关于sql - 如何返回 DBTIMEZONE 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42963795/

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