Làm cách nào để đặt múi giờ MySQL?

Có rất nhiều bài báo viết về MySQL và quản lý múi giờ, nhưng trong bài viết này, chúng tôi sẽ cố gắng điền thông tin còn thiếu. Chúng ta sẽ xem xét cách xử lý các múi giờ một cách hiệu quả

Đôi khi, khi làm việc với máy chủ MySQL, bạn cần xử lý các múi giờ khác nhau, điều này đôi khi có thể khiến bạn bối rối. Ví dụ: bạn cần đặt thời gian của Máy chủ MySQL theo thời gian của khách hàng hoặc di chuyển dữ liệu sang các máy chủ và múi giờ khác nhau

Khi bạn chuyển sang múi giờ Giờ tiết kiệm ánh sáng ban ngày (DST), điều này cũng có thể xảy ra. Để đảm bảo rằng múi giờ giống như kế hoạch, bạn phải kiểm tra hoặc thay đổi múi giờ của máy chủ MySQL

Trước hết, chúng ta cần kiểm tra thời gian hiện tại trong máy chủ MySQL để xem đó có phải là múi giờ mong muốn không

SELECT NOW();
+---------------------+
| NOW()               |
+---------------------+
| 2022-02-19 21:58:15 |
+---------------------+
1 row in set (0.00 sec)

Chúng tôi cũng có thể truy vấn các giá trị múi giờ toàn cầu và phiên hiện tại

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;

Phản hồi mặc định là

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
8, có nghĩa là múi giờ của máy chủ và hệ thống giống nhau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)

Có một số cách để thay đổi múi giờ;

Phương pháp đơn giản nhất là chỉnh sửa tệp cấu hình và đặt múi giờ mặc định. Bạn có thể mở tệp cấu hình

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
9 từ thiết bị đầu cuối từ máy chủ Linux bằng mã sau

$ sudo vi /etc/mysql/my.cnf

Sau khi mở tệp, chúng ta cần cuộn xuống một chút để tìm phần

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
0, và ở đây chúng ta sẽ thấy
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
0. Ở đây
SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
1 hiển thị phần bù từ vùng GMT

Chúng tôi có thể thay đổi nó thành múi giờ của Hungary bằng cách đặt

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
2. Trong một số trường hợp, có thể xảy ra trường hợp bạn không có phần
+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
0;

Sau khi chỉnh sửa tệp, chúng ta cần đóng tệp và khởi động lại máy chủ bằng lệnh sau

$ sudo service mysql restart

Chúng tôi cũng có thể thay đổi múi giờ toàn cầu của máy chủ và đặt giá trị bù GMT mới

________số 8

Trong lệnh này, bạn cần đặt độ lệch GMT cho múi giờ của mình. Chúng tôi đặt thành GMT

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
4 giờ

Bạn cũng có thể sử dụng các định nghĩa khác, chẳng hạn như thay đổi biến hoặc viết tên múi giờ cụ thể

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
0

Chúng tôi có thể gặp sự cố nhỏ nếu sử dụng tên của múi giờ cụ thể thay vì giá trị số. Nếu chúng tôi gặp lỗi

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
5, dữ liệu múi giờ không được tải trong máy chủ MySQL

Bạn có thể giải quyết vấn đề này bằng cách làm theo Điền vào các bảng múi giờ

Như bạn thấy, ban đầu chúng tôi đã truy vấn hai biến;

Bằng cách thay đổi biến này, bạn sẽ không thay đổi múi giờ toàn cầu mà chỉ thay đổi múi giờ cho mỗi phiên;

Để biết thời gian hiện tại, chúng ta có thể sử dụng hàm now() với câu lệnh SELECT. Truy vấn như sau -

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
3

Sau khi thực hiện câu truy vấn trên, chúng ta sẽ có được thời gian hiện tại. Sau đây là đầu ra -

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
4

Để đặt múi giờ, chúng ta có thể sử dụng lệnh SET. Cú pháp như sau -

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
5

Bây giờ tôi đang áp dụng truy vấn trên để đặt múi giờ. Truy vấn như sau -

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
6

Chúng ta cũng có thể thiết lập trên toàn cầu với sự trợ giúp của lệnh SET -

SELECT @@GLOBAL.time_zone, @@SESSION.time_zone;
7

Làm cách nào để đặt múi giờ MySQL?


Làm cách nào để đặt múi giờ MySQL?

Các múi giờ và các cài đặt khác nhau để quản lý và thao tác các trường liên quan đến ngày và giờ để lưu trữ và truy xuất thời gian liên quan đến vùng được hỗ trợ bởi MySQL. Theo mặc định, bất cứ khi nào MySQL được cài đặt trên máy, các biến múi giờ được đặt sao cho múi giờ được đặt trong hệ thống là hệ điều hành của máy được tham chiếu. Hơn nữa, chúng ta có thể thay đổi và thao tác các biến này theo sự thuận tiện và cần thiết để lưu trữ và thao tác các giá trị ngày và giờ trong MySQL. Chúng tôi có thể thay đổi các giá trị múi giờ bằng cách cộng hoặc trừ thời gian cần thiết theo giờ và phút từ UTC hoặc bằng cách chỉ định múi giờ ở định dạng được đặt tên theo vùng và vùng

Trong bài viết này, chúng ta sẽ nghiên cứu hoạt động của múi giờ trong MySQL và nghiên cứu một số biến liên quan cũng như cách chúng ta có thể nhận và đặt giá trị của các biến đó để thao tác múi giờ. Hơn nữa, chúng ta sẽ xem cách các bảng liên quan đến múi giờ có thể được tải thủ công trong MySQL và cũng xem một số ví dụ liên quan đến múi giờ

Bắt đầu khóa học khoa học dữ liệu miễn phí của bạn

Hadoop, Khoa học dữ liệu, Thống kê và những thứ khác

Các chức năng của Múi giờ MySQL

  • Bất cứ khi nào MySQL được khởi động, nó sẽ tìm kiếm múi giờ được đặt cho hệ thống và đặt giá trị của biến hệ thống có tên system_time_zone thành giá trị múi giờ được lấy từ máy chủ. Khi điều này được thực hiện trong quá trình khởi động máy chủ, giá trị của biến này không thay đổi
  • Chúng ta có thể thay đổi múi giờ của hệ thống tại thời điểm khởi động máy chủ bằng cách đặt giá trị của biến môi trường có tên TZ sẽ được thực hiện trước khi chạy lệnh mysqld
  • Ngoài ra, còn một phương pháp nữa để đặt múi giờ hệ thống trong trường hợp nếu bạn đang sử dụng chế độ mysqld_safe cho máy chủ của mình, bạn có thể đặt giá trị cho tùy chọn –timezone
  • Các giá trị được phép đặt thành tùy chọn biến TZ hoặc –múi giờ tùy thuộc vào hệ điều hành mà bạn đang sử dụng. Tham khảo tài liệu về hệ điều hành của bạn để biết thêm chi tiết về các giá trị múi giờ được chấp nhận
  • Múi giờ đang được sử dụng bởi máy chủ MySQL được xác định bởi các giá trị của giá trị hiện tại và giá trị toàn cầu cho biến hệ thống time_zone. Theo mặc định, giá trị ở đầu biến time_zone là SYSTEM, nghĩa là múi giờ của hệ điều hành máy chủ được sử dụng bởi MySQL
  • Chúng ta chỉ có thể đặt giá trị của biến toàn cục time_zone nếu chúng ta đã gán đặc quyền SUPER hoặc đặc quyền SYSTEM_VARIABLE_ADMIN bằng cách sử dụng lệnh SET GLOBAL time_zone
  • Biến phiên cho mỗi phiên máy khách đang được sử dụng có thể ghi đè giá trị múi giờ được đặt thành HỆ THỐNG hoặc múi giờ toàn cầu thành giá trị múi giờ bắt buộc cho phiên cụ thể đó bằng cách sử dụng lệnh SET time_zone
  • Tất cả các giá trị phân biệt theo vùng đều bị ảnh hưởng bởi múi giờ được đặt ở cấp phiên. Các giá trị được hiển thị bởi các hàm Now() và CURTIME() cũng như các cột có DẤU THỜI GIAN làm kiểu dữ liệu bị ảnh hưởng khi lưu trữ và truy xuất các giá trị đó
  • Các giá trị được lưu trữ và truy xuất trong các cột có kiểu dữ liệu NGÀY, GIỜ hoặc DATETIME không bị ảnh hưởng bởi cài đặt múi giờ phiên. Cùng với đó các chức năng như UTC_TIMESTAMP() cũng không bị ảnh hưởng
  • Múi giờ có thể được đặt ở cấp độ toàn cầu hoặc cấp độ phiên ở một trong hai định dạng đang xác định phần bù từ UTC ở định dạng chuỗi theo định dạng giờ và phút hh. mm bằng cách thêm như '-5. 30’, ‘+5. 30', v.v. hoặc trừ đi giá trị đó hoặc các múi giờ được đặt tên như America hoặc New_York cho America hoặc Asia/Kolkata cho Giờ chuẩn Ấn Độ i. e UTC+05. 30
  • Định dạng thứ hai của việc chỉ định múi giờ ở định dạng được đặt tên cần các bảng thông tin liên quan đến múi giờ được tải và điền vào máy chủ MySQL của bạn

Điền các bảng thông tin liên quan đến múi giờ

Bất cứ khi nào MySQL được cài đặt trên máy của bạn, các bảng khác nhau liên quan đến múi giờ sẽ được tạo để lưu trữ thông tin liên quan đến múi giờ bên trong lược đồ có tên MySQL. Tuy nhiên, trong quá trình cài đặt, chỉ việc tạo các bảng như vậy được thực hiện, trong khi để sử dụng các múi giờ được đặt tên và nhiều cơ sở tương tự như vậy, điều quan trọng là các bảng này phải được tải và điền

Chúng tôi có thể tải các bảng múi giờ theo cách thủ công. Trong một số hệ điều hành như macOS, Solaris, Linux và FreeBSD, chúng có cơ sở dữ liệu riêng lưu trữ thông tin vùng. Trong trường hợp này, chúng tôi có thể sử dụng tệp này để lưu trữ cùng một thông tin vào các bảng vùng của lược đồ MySQL của chúng tôi. Đường dẫn mà bạn thường tìm thấy tệp này nhất là thư mục /usr/share/zoneinfo. Chúng ta có thể sử dụng chương trình mysql_tzinfo_to_sql để điền các bảng vùng từ cơ sở dữ liệu thông tin vùng hệ thống bằng lệnh sau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
2

Gói khoa học dữ liệu tất cả trong một(360+ khóa học, hơn 50 dự án)

Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?

Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?
Làm cách nào để đặt múi giờ MySQL?

Giá
Xem khóa học

360+ Khóa học trực tuyến. hơn 50 dự án. Hơn 1500 giờ. Giấy chứng nhận có thể kiểm chứng. Truy cập Trọn đời
4. 7 (84.791 xếp hạng)

cho rằng bạn đang sử dụng tài khoản có tên người dùng là tên và mật khẩu là mật khẩu cho tài khoản đó và có đặc quyền ghi trên lược đồ MySQL của MySQL. Đối với các hệ điều hành không có thông tin khu vực như vậy, bạn có thể sử dụng các gói có thể tải xuống

Ví dụ về múi giờ MySQL

Để lấy giá trị múi giờ toàn cầu, bạn có thể sử dụng câu lệnh truy vấn sau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
3

Việc thực thi câu lệnh truy vấn trên cho kết quả đầu ra sau với SYSTEM là giá trị chỉ định rằng múi giờ toàn cầu của MySQL giống với múi giờ của hệ điều hành

Để lấy giá trị múi giờ của phiên, bạn có thể sử dụng câu lệnh truy vấn sau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
4

Việc thực thi câu lệnh truy vấn trên cho kết quả đầu ra sau với SYSTEM là giá trị chỉ định rằng múi giờ của MySQL giống với múi giờ của hệ điều hành

Làm cách nào để đặt múi giờ MySQL?

Hãy để chúng tôi truy xuất ngày và giờ hiện tại bằng cách sử dụng hàm NOW() cung cấp đầu ra sau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
5

Làm cách nào để đặt múi giờ MySQL?

Hãy để chúng tôi thay đổi múi giờ cho phiên hiện tại bằng lệnh sau

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
6

cung cấp cho đầu ra sau đây

Làm cách nào để đặt múi giờ MySQL?

Hãy để chúng tôi thực hiện lại lệnh tương tự để lấy ngày và giờ hiện tại

+--------------------+--------------------+
| @@GLOBAL.time_zone |@@SESSION.time_zone |
+--------------------+--------------------+
| SYSTEM             | SYSTEM             |
+--------------------+--------------------+
1 row in set (0.00 sec)
5

cung cấp cho đầu ra sau đây

Làm cách nào để đặt múi giờ MySQL?

Phần kết luận

MySQL cung cấp cho chúng tôi các biến khác nhau giúp chúng tôi duy trì và quản lý thông tin liên quan đến múi giờ trong MySQL. Chúng tôi có thể nhận và đặt các giá trị của múi giờ bằng cách thay đổi giá trị của nó ở cấp độ toàn cầu hoặc phiên hoặc bên trong tệp cấu hình

Bài viết được đề xuất

Đây là hướng dẫn về Múi giờ MySQL. Ở đây chúng tôi cũng thảo luận về việc giới thiệu và hoạt động của múi giờ mysql cùng với các ví dụ khác nhau và cách triển khai mã của nó. Bạn cũng có thể xem các bài viết sau để tìm hiểu thêm –

Làm cách nào để kiểm tra múi giờ trong cơ sở dữ liệu MySQL?

Sau đây là cú pháp để lấy múi giờ hiện tại của MySQL. mysql> CHỌN @@global. time_zone, @@session .

Làm cách nào để có được thời gian UTC trong MySQL?

MySQL - Hàm UTC_TIMESTAMP() . Giá trị kết quả là một chuỗi hoặc một giá trị số dựa trên ngữ cảnh và giá trị được trả về sẽ ở dạng 'YYYY-MM-DD hh. mm. định dạng ss' hoặc YYYYMMDDhhmmss.

Làm cách nào để chuyển đổi UTC sang múi giờ địa phương trong MySQL?

Bạn có thể dễ dàng chuyển đổi UTC sang giờ địa phương trong MySQL bằng hàm convert_tz . Đây là cú pháp của hàm convert_tz. Trong hàm trên, bạn cần chỉ định giá trị ngày ở dạng chuỗi ký tự, hàm hệ thống hoặc tên cột, múi giờ ban đầu cũng như múi giờ mới của nó.

Múi giờ phiên MySQL là gì?

MySQL cung cấp cho bạn phiên @@. biến time_zone, lưu trữ múi giờ hiện tại của phiên hiện đang chạy . Mỗi phiên kết nối với Máy chủ MySQL được chỉ định cài đặt múi giờ phiên của nó. Theo mặc định, giá trị này được đặt thành giá trị múi giờ toàn cầu.