由于时区是全球的一个区域,它为法律、商业和社会目的遵守统一的标准时间,并倾向于遵循国家及其细分的边界,因此 Oracle 仅将这些标准值关联到用于编程目的的视图中.将其视为关于 V$TIME_ZONES 的元数据表。
https://www.timeanddate.com/time/zones/
区域 id 是从 timezone.dat 文件中检索到的,但您提到的过程最后会输出原始数据。
SQL> set serveroutput on
DECLARE
r RAW(22);
BEGIN
dbms_utility.get_tz_transitions(10, r);
dbms_output.put_line(r);
dbms_utility.get_tz_transitions(12, r);
dbms_output.put_line(r);
END;
/SQL> SQL> 2 3 4 5 6 7 8 9 10
01766401010101011A3C00
0176640101010101183C00
PL/SQL procedure successfully completed.
SQL>
Oracle 数据库时区文件包含有效的时区名称。每个时区还包括以下信息:
- 与协调世界时 (UTC) 的偏移量
- 夏令时的转换时间
- 标准时间和夏令时的缩写
Oracle 数据库主目录中包含两个时区文件。默认时区文件是
- $ORACLE_HOME/oracore/zoneinfo/timezonelrg.dat,其中包含所有
数据库中定义的时区。
- $ORACLE_HOME/oracore/zoneinfo/timezone.dat 仅包含最
常用时区。
要启用 $ORACLE_HOME/oracore/zoneinfo/timezone.dat,请执行以下步骤:
- 如果数据库已启动,请将其关闭。
- 将 ORA_TZFILE 环境变量设置为 $ORACLE_HOME/oracore/zoneinfo/timezone.dat。
- 重启数据库。
更新
$ORACLE_HOME/oracore/zoneinfo/readme.txt 文件可能就是您要查找的文件。
Timezones updated:
DSTVERSION TIME_ZONE_NAME FROM_YEAR TO_YEAR
26, Asia/Novokuznetsk, 1992, 1992
26, America/Santa_Isabel, 1800, 1800
DSTVERSION TIME_ZONE_NAME FROM_YEAR TO_YEAR
23, Africa/Ouagadougou, 1800,
23, Africa/Cairo, 2014, 2022
也许 DSTVERSION 指的是 region_id