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

Đặt múi giờ cơ sở dữ liệu MySQL thành GMT

Không, không thể thay đổi múi giờ cho một cơ sở dữ liệu trong một phiên bản MySQL.

Chúng tôi có thể truy xuất máy chủ và máy khách time_zone cài đặt với một truy vấn, như sau:

SELECT @@global.time_zone, @@session.time_zone;

Chúng tôi cũng có thể thay đổi múi giờ ứng dụng khách cho một phiên hoặc thay đổi múi giờ cho toàn bộ phiên bản MySQL.

Nhưng chúng tôi cần phải nhận thức rõ ràng về hàm ý mà thay đổi này sẽ có trên các kết nối máy khách hiện có và cách thức DATETIMETIMESTAMP các giá trị đã được lưu trữ trong phiên bản sẽ được diễn giải.

Để đặt time_zone của máy chủ khi khởi động phiên bản MySQL, chúng ta có thể sửa đổi /etc/my.cnf tệp (hoặc bất cứ nơi nào các thông số khởi tạo phiên bản mysql được đọc từ đó), trong [mysqld] phần:

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

- hoặc -

Cũng có thể (ít mong muốn hơn) thêm --default_time_zone='+00:00' tùy chọn tới mysqld_safe

LƯU Ý: Thay đổi cài đặt múi giờ trên máy chủ MySQL KHÔNG thay đổi các giá trị được lưu trữ trong các cột DATETIME hoặc TIMESTAMP hiện có, NHƯNG vì nó thực sự thay đổi ngữ cảnh trong đó các giá trị được lưu trữ đó được diễn giải, nó sẽ giống như tất cả các giá trị đều ĐƯỢC dịch chuyển. (Trong đó 08:00 có nghĩa là 8 giờ sáng CST, với múi giờ của máy chủ được thay đổi từ CST thành GMT, cùng '08:00 'bây giờ sẽ được coi là 8 giờ sáng GMT, thực tế sẽ là 2 giờ sáng CST.

Cũng nên nhớ rằng các cột TIMESTAMP luôn được lưu trữ ở UTC, trong khi các cột DATETIME không có múi giờ. http://dev.mysql.com/doc/refman/5.5/en/datetime.html

Mỗi phiên khách hàng có thể thay đổi cài đặt múi giờ cho phiên của chính họ:

SET time_zone='-06:00';

Nhưng không điều nào trong số này thực sự "giải quyết" được vấn đề chuyển đổi múi giờ, nó chỉ xoay chuyển vấn đề chuyển đổi xung quanh.

Vốn dĩ không có gì là "xấu" với các chuyển đổi múi giờ xử lý lớp ứng dụng; đôi khi, đó là nơi tốt nhất để xử lý. Nó chỉ cần được thực hiện một cách chính xác và nhất quán.

(Điều kỳ lạ về thiết lập mà bạn mô tả là ứng dụng đang lưu trữ các giá trị DATETIME như thể múi giờ của máy chủ MySQL được đặt thành GMT, nhưng múi giờ của máy chủ MySQL được đặt thành thứ khác.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Danh sách có thể sắp xếp lưu giao diện người dùng JQuery

  2. Sự khác biệt giữa INSERT và UPDATE trong MySQL là gì?

  3. Cấu hình chỉ mục Mysql

  4. Hiệu suất MySQL:Cách tận dụng việc lập chỉ mục cơ sở dữ liệu MySQL

  5. Dấu thời gian và ngày tháng trong một hàng bảng MySQL