- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我跑了
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:00
和 US/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/
我跑了 select dbtimezone, sessiontimezone from dual 分别返回 -04:00 和 -06:00。 我也跑了 select TZ_OFFSET('US/E
我跑了 select dbtimezone, sessiontimezone from dual 分别返回 -04:00 和 -06:00。 我也跑了 select TZ_OFFSET('US/E
Oracle 中是否有一种平滑的方法可以在当前时刻(当我执行调用时)获取 SESSIONTIMEZONE 和 DBTIMEZONE 之间的数值差异? 例如: SELECT SESSIONTIMEZON
使用此查询:select sysdate from dual; 结果是:27-09-2018 07:50:50 -- 这个英国时间 with : Select dbtimezone from dual
我是一名优秀的程序员,十分优秀!