MySQL có phải là giờ UTC không?

Đôi khi bạn có thể cần thay đổi múi giờ thành UTC hoặc đặt múi giờ thành UTC. Trong bài viết này, chúng ta sẽ xem xét cách chuyển đổi datetime sang UTC trong MySQL


Cách chuyển đổi ngày giờ thành UTC trong MySQL

Dưới đây là các bước để chuyển đổi datetime sang UTC trong MySQL. Bạn có thể dễ dàng thay đổi ngày giờ thành UTC bằng hàm convert_tz

Đây là cú pháp cho convert_tz

convert_tz(date_value, original_timezone, new_timezone)

Trong hàm trên, bạn có thể chỉ định giá trị ngày dưới 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ờ ban đầu và múi giờ mới có thể được chỉ định bằng cách sử dụng tên múi giờ hoặc tên múi giờ

Cũng đọc. Cách chuyển đổi UTC thành Giờ địa phương trong MySQL

Dưới đây là một ví dụ để chuyển đổi giá trị ngày giờ từ múi giờ địa phương (GMT+10. 00) đến UTC(+00. 00). Theo mặc định, bạn cần chỉ định bản gốc (+10. 00) và múi giờ mới (+00. 00) dưới dạng hiệu số từ UTC

mysql> SELECT CONVERT_TZ('2018-06-15 12:00:00','+10:00','+00:00');
 +-----------------------------------------------------+
 | CONVERT_TZ('2018-06-15 12:00:00','+00:00','+10:00') |
 +-----------------------------------------------------+
 | 2018-06-15 02:00:00                                 |
 +-----------------------------------------------------+

Tương tự, bạn cũng có thể chuyển đổi các cột ngày, giờ, ngày giờ bằng convert_tz. Dưới đây là một ví dụ để thay đổi múi giờ của cột ngày đặt hàng trong bảng doanh số bán hàng, từ UTC sang EST

mysql> select convert_tz(order_date,'+10:00','+00:00') from sales;
+------------------------------------------+
| convert_tz(order_date,'+10:00','+00:00') |
+------------------------------------------+
| 2020-05-03 19:00:00                      |
| 2020-05-04 19:00:00                      |
| 2020-05-05 19:00:00                      |
| ..                                      |
| 2020-05-13 19:00:00                      |
+------------------------------------------+

Cũng đọc. Cách lấy ngày và giờ hiện tại trong MySQL

Bạn cũng có thể chỉ định múi giờ thay vì hiệu số. Tuy nhiên, trong trường hợp này, bạn sẽ cần tải xuống và cài đặt múi giờ MySQL trên máy chủ của mình. Đây là một ví dụ để chuyển đổi múi giờ EST sang UTC bằng cách chỉ định tên múi giờ thay vì giá trị bù

Múi giờ địa phương của bạn có thể khác với múi giờ MySQL của máy chủ của bạn. Điều đó làm cho việc diễn giải dữ liệu trong cơ sở dữ liệu của bạn trở nên rất khó khăn. Lý tưởng nhất là múi giờ của MySQL phải giống với múi giờ của bạn để xử lý dữ liệu hiệu quả hơn

Hướng dẫn này sẽ giúp bạn thay đổi múi giờ trên máy chủ MySQL của mình, giúp việc đọc nhật ký máy chủ và các dữ liệu khác trở nên dễ dàng và trực quan hơn

tutorial on changing and how to set time zone in MySQL

điều kiện tiên quyết

  • Tài khoản người dùng có quyền root hoặc sudo
  • Một máy chủ Linux chạy MySQL
  • Tài khoản người dùng root cho cơ sở dữ liệu MySQL
  • Một cửa sổ terminal/dòng lệnh (Ctrl-Alt-T, Search > Terminal)
  • Kết nối SSH đến máy chủ của bạn (nếu làm việc từ xa)

Tìm Múi giờ MySQL hiện tại

Mở một cửa sổ đầu cuối. Nếu bạn đang làm việc từ xa, hãy kết nối với máy chủ của bạn qua SSH, sử dụng quyền root

Nhập thông tin sau để kiểm tra múi giờ toàn cầu hiện tại trong MySQL

sudo mysql –e “SELECT @@global.time_zone;”

command that displays the MySQL time zone in use

Theo mặc định, hệ thống sẽ hiển thị giá trị SYSTEM cho múi giờ của bạn. Điều này chỉ ra rằng múi giờ trong MySQL được đồng bộ hóa với múi giờ của máy chủ

Để hiển thị dấu thời gian từ máy chủ, hãy nhập thông tin sau

date

Hệ thống sẽ hiển thị ngày, giờ và múi giờ của máy chủ. Ví dụ,

Tue Jan 21 11:33:35 MST 2020

Múi giờ được biểu thị bằng mã chữ cái. Trong trường hợp này, nó được đặt thành Giờ chuẩn miền núi (MST)

Hiển thị dấu thời gian từ máy chủ MySQL

sudo mysql –e “SELECT NOW();”

Hệ thống sẽ hiển thị thời gian hiện tại trong MySQL

Terminal output that indicates current time and date in MySQL

Thay đổi múi giờ trong MySQL

lựa chọn 1. Sử dụng lệnh SET GLOBAL time_zone

Sử dụng tùy chọn này để đặt giá trị GMT mới cho múi giờ MySQL toàn cầu của máy chủ

sudo mysql -e "SET GLOBAL time_zone = ‘-6:00’;"

Thay vì

date
1, hãy nhập giá trị GMT mà bạn mong muốn. Nếu thực hiện đúng, không có đầu ra phản hồi

Kiểm tra giá trị mới của cài đặt múi giờ MySQL trên máy chủ của bạn

sudo mysql -e "SELECT @@global.time_zone;"

using the global timezone command in MySQL

Sau khi bạn thay đổi múi giờ, ngày giờ và dấu thời gian được lưu trữ trước đó sẽ không được cập nhật

Ghi chú. Lệnh

date
2 sửa đổi múi giờ toàn cầu trong MySQL trong khoảng thời gian hoạt động của dịch vụ hiện tại. Khi dịch vụ MySQL được khởi động lại, cài đặt sẽ trở về mặc định (HỆ THỐNG)

Vì lý do đó, một tùy chọn tốt hơn nhiều là đặt múi giờ bằng cách chỉnh sửa tệp cấu hình MySQL

Lựa chọn 2. Chỉnh sửa tệp cấu hình MySQL

Có thể thay đổi cài đặt MySQL bằng cách chỉnh sửa tệp chính của tôi. tập tin cấu hình cnf. Mở tệp để chỉnh sửa

sudo nano /etc/mysql/my.cnf

Cuộn xuống phần

date
3 và tìm dòng
date
4. Thay đổi giá trị
date
5 thành giá trị GMT cho múi giờ bạn muốn. Lưu file và thoát

Trong ví dụ bên dưới, chúng tôi đặt múi giờ của Máy chủ MySQL thành

date
6 (GMT +8)

example of how to set time zone in MySQL configuration file

Ghi chú. Nếu bạn đang làm việc với một bản cài đặt MySQL mới, /etc/mysql/my. tệp cnf có thể không có bất kỳ cài đặt nào trong đó. Nếu đúng như vậy, hãy cuộn xuống cuối tài liệu và thêm phần sau

[mysqld]
default-time-zone = "+00:00"

Thay vì

date
5, hãy nhập múi giờ bạn muốn định cấu hình

Khởi động lại máy chủ MySQL để áp dụng các thay đổi

sudo service mysql restart

Kiểm tra lại múi giờ và thời gian hiện tại

sudo mysql –e “SELECT @@global.time_zone;”
sudo mysql –e “SELECT NOW();”

Phần kết luận

Trong bài viết này, bạn đã học được hai phương pháp khác nhau để thay đổi múi giờ mặc định trong MySQL

Nếu bạn cũng cần đặt múi giờ trên máy chủ Ubuntu của mình, hãy tham khảo Cách đặt hoặc thay đổi múi giờ trên Ubuntu

MySQL sử dụng múi giờ nào?

Theo mặc định, múi giờ cho phiên bản Cơ sở dữ liệu MySQL là Giờ phối hợp quốc tế (UTC) . Thay vào đó, bạn có thể đặt múi giờ cho phiên bản CSDL thành múi giờ địa phương cho ứng dụng của mình.

MySQL có lưu trữ dữ liệu thời gian dưới dạng UTC không?

dấu thời gian là loại trường mysql duy nhất lưu trữ các giá trị liên quan đến múi giờ (cụ thể là UTC), ngày giờ không lưu trữ theo múi giờ!

Làm cách nào để đặt MySQL thành UTC?

Tùy chọn 2. Chỉnh sửa tệp cấu hình MySQL . 00" dòng. Thay đổi +00. 00 thành giá trị GMT cho múi giờ bạn muốn. Lưu file và thoát. Trong ví dụ bên dưới, chúng tôi đặt múi giờ của Máy chủ MySQL thành +08. 00 (GMT +8).

Làm cách nào để lấy DẤU THỜI GIAN UTC hiện tại 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.