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

Trả lại danh sách các múi giờ được hỗ trợ bởi PostgreSQL

Khi làm việc với PostgreSQL, đôi khi bạn có thể rơi vào tình huống cần danh sách múi giờ mà Postgres nhận ra.

Ví dụ:bạn có thể đang cố gắng đặt múi giờ cho phiên hiện tại của mình hoặc bạn có thể đang sử dụng một trong các hàm ngày giờ cho phép bạn thao tác múi giờ.

Dưới đây là hai dạng xem và hai hàm trả về danh sách các múi giờ.

Chế độ xem pg_timezone_abbrevs

pg_timezone_abbrevs chế độ xem cung cấp danh sách các chữ viết tắt của múi giờ hiện được các hàm ngày giờ công nhận.

Dưới đây là 10 hàng trên cùng trông như thế nào:

SELECT * 
FROM pg_timezone_abbrevs
LIMIT 10;

Kết quả:

abbrev  | utc_offset | is_dst
--------+------------+--------
ACDT    | 10:30:00   | t
ACSST   | 10:30:00   | t
ACST    | 09:30:00   | f
ACT     | -05:00:00  | f
ACWST   | 08:45:00   | f
ADT     | -03:00:00  | t
AEDT    | 11:00:00   | t
AESST   | 11:00:00   | t
AEST    | 10:00:00   | f
AFT     | 04:30:00   | f

is_dst cột cho biết đây có phải là từ viết tắt của tiết kiệm ánh sáng ban ngày hay không.

Lưu ý rằng nội dung của chế độ xem này thay đổi khi timezone_abbreviations tham số thời gian chạy được sửa đổi.

Cũng lưu ý rằng tài liệu Postgres nêu rõ:

Mặc dù hầu hết các chữ viết tắt của múi giờ thể hiện sự chênh lệch cố định so với UTC, nhưng có một số từ đã thay đổi về giá trị trong lịch sử (xem Phần B.4 để biết thêm thông tin). Trong những trường hợp như vậy, quan điểm này thể hiện ý nghĩa hiện tại của chúng.

Hàm pg_timezone_abbrevs ()

Ngoài ra, bạn có thể sử dụng pg_timezone_abbrevs() chức năng trả về kết quả dưới dạng SETOF.

SELECT pg_timezone_abbrevs()
LIMIT 10;

Kết quả:

pg_timezone_abbrevs
-------------------
(ACDT,10:30:00,t)
(ACSST,10:30:00,t)
(ACST,09:30:00,f)
(ACT,-05:00:00,f)
(ACWST,08:45:00,f)
(ADT,-03:00:00,t)
(AEDT,11:00:00,t)
(AESST,11:00:00,t)
(AEST,10:00:00,f)
(AFT,04:30:00,f)

Bạn cũng có thể sử dụng cú pháp sau để trả về kết quả trong các cột riêng biệt nếu được yêu cầu.

SELECT * 
FROM pg_timezone_abbrevs()
LIMIT 10;

Kết quả:

abbrev  | utc_offset | is_dst
--------+------------+--------
ACDT    | 10:30:00   | t
ACSST   | 10:30:00   | t
ACST    | 09:30:00   | f
ACT     | -05:00:00  | f
ACWST   | 08:45:00   | f
ADT     | -03:00:00  | t
AEDT    | 11:00:00   | t
AESST   | 11:00:00   | t
AEST    | 10:00:00   | f
AFT     | 04:30:00   | f

Chế độ xem pg_timezone_names

pg_timezone_names chế độ xem cung cấp danh sách các tên múi giờ được SET TIMEZONE nhận dạng , cùng với các từ viết tắt liên quan, hiệu số UTC và trạng thái tiết kiệm ánh sáng ban ngày.

Dưới đây là 10 hàng trên cùng trông như thế nào:

SELECT * 
FROM pg_timezone_names
LIMIT 10;

Kết quả:

       name              | abbrev | utc_offset | is_dst 
------------------+--------+------------+--------
 Indian/Mauritius  | +04    | 04:00:00   | f
 Indian/Chagos     | +06    | 06:00:00   | f
 Indian/Mayotte    | EAT    | 03:00:00    | f
 Indian/Christmas  | +07    | 07:00:00    | f
 Indian/Cocos      | +0630  | 06:30:00    | f
 Indian/Maldives   | +05    | 05:00:00    | f
 Indian/Comoro     | EAT    | 03:00:00    | f
 Indian/Reunion    | +04    | 04:00:00    | f
 Indian/Mahe       | +04    | 04:00:00    | f
 Indian/Kerguelen  | +05    | 05:00:00    | f

is_dst cột cho biết múi giờ hiện đang quan sát tiết kiệm ánh sáng ban ngày hay không.

Đối với chế độ xem này, tài liệu Postgres nêu rõ:

Không giống như các từ viết tắt được hiển thị trong pg_timezone_abbrevs , nhiều tên trong số này ngụ ý một tập hợp các quy tắc về ngày chuyển đổi tiết kiệm ánh sáng ban ngày. Do đó, thông tin liên quan thay đổi qua các ranh giới DST cục bộ. Thông tin hiển thị được tính dựa trên giá trị hiện tại của CURRENT_TIMESTAMP .

Hàm pg_timezone_names ()

Bạn cũng có thể sử dụng pg_timezone_names() chức năng trả về kết quả dưới dạng SETOF.

SELECT pg_timezone_names()
LIMIT 10;

Kết quả:

pg_timezone_names
---------------------------------
(Indian/Mauritius,+04,04:00:00,f)
(Indian/Chagos,+06,06:00:00,f)
(Indian/Mayotte,EAT,03:00:00,f)
(Indian/Christmas,+07,07:00:00,f)
(Indian/Cocos,+0630,06:30:00,f)
(Indian/Maldives,+05,05:00:00,f)
(Indian/Comoro,EAT,03:00:00,f)
(Indian/Reunion,+04,04:00:00,f)
(Indian/Mahe,+04,04:00:00,f)
(Indian/Kerguelen,+05,05:00:00,f)

Bạn cũng có thể sử dụng cú pháp sau để trả về kết quả trong các cột riêng biệt.

SELECT * FROM pg_timezone_names()
LIMIT 10;

Kết quả:

name              | abbrev | utc_offset | is_dst 
------------------+--------+------------+--------
Indian/Mauritius  | +04    | 04:00:00   | f
Indian/Chagos     | +06    | 06:00:00   | f
Indian/Mayotte    | EAT    | 03:00:00   | f
Indian/Christmas  | +07    | 07:00:00   | f
Indian/Cocos      | +0630  | 06:30:00   | f
Indian/Maldives   | +05    | 05:00:00   | f
Indian/Comoro     | EAT    | 03:00:00   | f
Indian/Reunion    | +04    | 04:00:00   | f
Indian/Mahe       | +04    | 04:00:00   | f
Indian/Kerguelen  | +05    | 05:00:00   | f

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Triển khai Switchover / Switchback trong PostgreSQL 9.3.

  2. Chèn dữ liệu vào 3 bảng cùng một lúc bằng Postgres

  3. Sao lưu PostgreSQL bằng pg_dump và pg_dumpall

  4. Không tốt nhất mảng theo một cấp độ

  5. Số lượng phân trang Django Rest Framework cực kỳ chậm