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ủaCURRENT_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