Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách trả về danh sách các múi giờ hợp lệ trong cơ sở dữ liệu Oracle

Đôi khi chúng ta cần chỉ định múi giờ khi sử dụng các hàm datetime trong Oracle.

Nhưng có rất nhiều múi giờ ngoài kia. Làm thế nào để chúng ta nhớ tất cả chúng? Và làm cách nào để biết hệ thống của mình hỗ trợ một múi giờ nhất định?

May mắn thay, chúng tôi có thể truy vấn V$TIMEZONE_NAMES xem để trả về danh sách các múi giờ hợp lệ.

Nhận tất cả thông tin về múi giờ

Đoạn mã sau trả về tất cả các hàng và cột từ dạng xem:

SELECT * FROM V$TIMEZONE_NAMES;

Có rất nhiều hàng trong chế độ xem này, nhưng đây là 10 hàng đầu tiên trông như thế nào:

               TZNAME    TZABBREV    CON_ID 
_____________________ ___________ _________ 
Africa/Abidjan        LMT                 0 
Africa/Abidjan        GMT                 0 
Africa/Accra          LMT                 0 
Africa/Accra          GMT                 0 
Africa/Accra          +0020               0 
Africa/Addis_Ababa    LMT                 0 
Africa/Addis_Ababa    EAT                 0 
Africa/Addis_Ababa    +0230               0 
Africa/Addis_Ababa    +0245               0 
Africa/Algiers        LMT                 0 
...

Chúng ta có thể thấy rằng mỗi tên khu vực múi giờ có nhiều hơn một chữ viết tắt tương ứng. Điều này phục vụ cho những việc như tiết kiệm ánh sáng ban ngày, v.v.

Dưới đây là bảng trình bày ý nghĩa của một số từ viết tắt:

Tên viết tắt của múi giờ Ý nghĩa
LMT Giờ trung bình địa phương
PMT Giờ trung bình Paris
HẾT Giờ Tây Âu
TÂY Giờ mùa hè Tây Âu
CET Giờ Trung Âu
CEST Giờ mùa hè Trung Âu
HẾT Giờ Đông Âu
EEST Giờ mùa hè Đông Âu

Chỉ lấy tên vùng

Chúng tôi có thể sử dụng DISTINCT hoặc UNIQUE mệnh đề chỉ trả về tên khu vực múi giờ mà không bị trùng lặp.

SELECT DISTINCT TZNAME 
FROM V$TIMEZONE_NAMES
ORDER BY TZNAME ASC;

Dưới đây là giao diện của 10 hàng đầu tiên:

               TZNAME 
_____________________ 
Africa/Abidjan        
Africa/Accra          
Africa/Addis_Ababa    
Africa/Algiers        
Africa/Asmara         
Africa/Asmera         
Africa/Bamako         
Africa/Bangui         
Africa/Banjul         
Africa/Bissau         
...

Nhận tất cả chữ viết tắt cho tên múi giờ nhất định

Dưới đây là ví dụ về truy vấn trả về tất cả các chữ viết tắt của tên múi giờ nhất định:

SELECT 
    TZNAME,
    TZABBREV
FROM V$TIMEZONE_NAMES
WHERE TZNAME LIKE '%Sydney%'
ORDER BY TZNAME ASC;

Kết quả:

             TZNAME    TZABBREV 
___________________ ___________ 
Australia/Sydney    LMT         
Australia/Sydney    AEDT        
Australia/Sydney    AEST        

Giới thiệu về tệp múi giờ

Trong Cơ sở dữ liệu Oracle, tên múi giờ được chứa trong các tệp múi giờ.

Bạn có thể truy vấn V$TIMEZONE_FILE để xem tệp múi giờ nào hiện đang được cơ sở dữ liệu sử dụng.

Ví dụ:

SELECT * FROM V$TIMEZONE_FILE;

Kết quả:

          FILENAME    VERSION    CON_ID 
__________________ __________ _________ 
timezlrg_32.dat            32         0 

Hệ thống của tôi đang sử dụng phiên bản 32, là tệp múi giờ mặc định cho Oracle 19c (là những gì tôi đang sử dụng). Tệp này nằm ở vị trí sau:$ORACLE_HOME/oracore/zoneinfo/timezlrg_32.dat

Xem tài liệu của Oracle về Chọn tệp múi giờ để biết thêm thông tin về tệp múi giờ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thiết lập môi trường phát triển để học PL / SQL

  2. Sửa đổi truy vấn chế độ xem cụ thể hóa

  3. Oracle:Cập nhật cột bảng bằng ROWNUM kết hợp với mệnh đề ORDER BY

  4. Thời lượng của dữ liệu trong bảng Tạm thời chung?

  5. Cân nhắc về hiệu suất cho dữ liệu tạm thời trong Oracle