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

Cách thiết lập múi giờ được đặt tên trong MariaDB

Nếu bạn muốn sử dụng múi giờ đã đặt tên trong MariaDB, bạn cần đảm bảo rằng chúng đã được định cấu hình.

Theo "múi giờ được đặt tên", ý tôi là có thể sử dụng các chuỗi như America/Los_Angeles thay vì −08:00 hoặc −07:00 khi chỉ định múi giờ. Ví dụ:khi sử dụng CONVERT_TZ() chức năng.

Dưới đây là cách định cấu hình múi giờ được đặt tên trong MariaDB.

Bảng múi giờ

MariaDB có các bảng múi giờ sau trong mysql cơ sở dữ liệu:

  • time_zone
  • time_zone_leap_second
  • time_zone_name
  • time_zone_transition
  • time_zone_transition_type

Theo mặc định, các bảng này được tạo, nhưng không được điền.

Để sử dụng múi giờ đã đặt tên, bạn cần điền các bảng này. Phương pháp thực hiện việc này sẽ phụ thuộc vào hệ thống của bạn (tức là hệ thống của bạn có thực sự chứa thông tin múi giờ hay không).

Hệ thống giống Unix

Lý do khiến các bảng múi giờ ở trên trống theo mặc định là vì hệ thống xử lý múi giờ thường tốt hơn nếu có thể.

Hầu hết các hệ thống giống Unix như Linux, Mac OS X, FreeBSD và Solaris đều có cơ sở dữ liệu zoneinfo. Cơ sở dữ liệu múi giờ này có thể được tải vào bảng múi giờ trong MariaDB với mysql_tzinfo_to_sql tiện ích.

Nếu hệ thống của bạn chứa cơ sở dữ liệu múi giờ, bạn nên sử dụng phương pháp này để điền các bảng múi giờ. Nếu không, bạn có thể gây ra sự khác biệt trong việc xử lý datetime giữa MariaDB và các ứng dụng khác trên hệ thống của bạn.

Để tải bảng múi giờ, hãy mở cửa sổ dòng lệnh và chạy như sau:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Nhập mật khẩu cho root người dùng. Nếu bạn gặp lỗi "quyền truy cập bị từ chối", hãy xem bản sửa lỗi này.

Đó là nó. Bây giờ các bảng múi giờ sẽ được điền.

Trong trường hợp của tôi, tôi nhận được một cảnh báo:

Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it.

Cảnh báo này có thể được bỏ qua một cách an toàn.

Cảnh báo này có thể là do các hệ thống giống Unix không bao gồm giây nhuận. Nghĩa là, các hệ thống giống Unix không có cách nào để biểu thị giây nhảy vọt dưới dạng 23:59:60 . Thay vào đó, nó chỉ sử dụng cùng một giây hai lần.

Điều này tuân theo tiêu chuẩn POSIX (Giao diện Hệ điều hành Di động), yêu cầu bỏ qua giây nhuận so với thời gian được báo cáo.

Hệ thống Windows, HP-UX

Một số hệ thống, chẳng hạn như Windows và HP-UX không có cơ sở dữ liệu múi giờ, vì vậy bạn sẽ cần tải bảng múi giờ thông qua tập lệnh SQL nếu bạn đang sử dụng các hệ điều hành này.

Xem tài liệu MySQL để biết các tập lệnh và hướng dẫn cài đặt.

Kiểm tra các bảng múi giờ

Sau khi các bảng múi giờ đã được điền, chúng tôi có thể chạy một truy vấn nhanh để kiểm tra xem chúng đã được điền vào thực tế chưa.

Ví dụ:

SELECT * 
FROM mysql.time_zone_name
LIMIT 10;

Kết quả:

+--------------------+--------------+
| Name               | Time_zone_id |
+--------------------+--------------+
| Africa/Abidjan     |            1 |
| Africa/Accra       |            2 |
| Africa/Addis_Ababa |            3 |
| Africa/Algiers     |            4 |
| Africa/Asmara      |            5 |
| Africa/Asmera      |            6 |
| Africa/Bamako      |            7 |
| Africa/Bangui      |            8 |
| Africa/Banjul      |            9 |
| Africa/Bissau      |           10 |
+--------------------+--------------+

Trong trường hợp này, tôi đã chọn 10 kết quả hàng đầu từ time_zone_name bàn.

Đây là tổng số đầy đủ:

SELECT COUNT(*) 
FROM mysql.time_zone_name;

Kết quả:

+----------+
| COUNT(*) |
+----------+
|      594 |
+----------+

Bạn có thể chạy qua các bảng khác theo yêu cầu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách thiết kế một cụm MariaDB được phân phối theo địa lý

  2. ClusterControl 1.5 - Xác minh sao lưu tự động, xây dựng Slave từ sao lưu và tích hợp đám mây

  3. Cách chạy SHOW LOCALES trong MariaDB

  4. So sánh các sản phẩm cung cấp trên đám mây của Galera Cluster:Phần thứ hai của Google Cloud Platform (GCP)

  5. Cách CHAR () hoạt động trong MariaDB