Hướng dẫn how do i set mysql timezone? - làm cách nào để đặt múi giờ mysql?
Tôi nghĩ điều này có thể hữu ích: Show
Có ba nơi mà múi giờ có thể được đặt trong MySQL:Trong tệp "My.cnf" trong phần [MySQLD]
@@ global.time_zone biếnĐể xem họ được đặt thành giá trị gì:
Để đặt giá trị cho nó sử dụng một trong hai:
. Hãy nhớ rằng 5 là một phần bù. 6 là một múi giờ (có hai lần bù) và 7 là thời gian đồng hồ tương ứng với một phần bù cụ thể.@@ session.time_zone biến
Để đặt nó sử dụng một trong hai:
Cả hai có thể trả về hệ thống, điều đó có nghĩa là họ sử dụng thời gian được đặt trong My.cnf. Đối với tên múi giờ hoạt động, bạn phải thiết lập bảng thông tin múi giờ của mình cần được điền: http://dev.mysql.com/doc/refman/5.1/en/time- Zone-Support.html. Tôi cũng đề cập đến cách cư trú trong các bảng trong câu trả lời này. Để có được phần bù múi giờ hiện tại là SET GLOBAL time_zone = '+8:00'; SET GLOBAL time_zone = 'Europe/Helsinki'; SET @@global.time_zone = '+00:00'; 8
Nó sẽ trở lại 02:00:00 nếu múi giờ của bạn là +2: 00. Để có được dấu thời gian UNIX hiện tại:
Để có được cột dấu thời gian làm dấu thời gian unix
Để có được một cột DateTime UTC làm dấu thời gian UNIX
Lưu ý: Thay đổi múi giờ sẽ không thay đổi DateTime hoặc dấu thời gian được lưu trữ, nhưng nó sẽ hiển thị một loại dữ liệu khác cho các cột dấu thời gian hiện có vì chúng được lưu trữ bên trong dưới dạng dấu thời gian UTC và được hiển thị bên ngoài trong mốc thời gian MySQL hiện tại.will not change the stored datetime or timestamp, but it will show a different datetime for existing timestamp columns as they are internally stored as UTC timestamps and externally displayed in the current MySQL timezone. Tôi đã thực hiện một trò gian lận ở đây: MySQL có nên đặt múi giờ cho UTC không? 5.1.15 & NBSP; Hỗ trợ múi giờ của máy chủ MySQLPhần này mô tả các cài đặt múi giờ được duy trì bởi MySQL, cách tải các bảng hệ thống cần thiết để hỗ trợ thời gian được đặt tên, cách duy trì dòng điện với thay đổi múi giờ và cách bật hỗ trợ bước nhảy. Bắt đầu với MySQL 8.0.19, độ lệch múi giờ cũng được hỗ trợ cho các giá trị DateTime được chèn; Xem Phần & NBSP; 11.2.2, Ngày The Date, DateTime và Timestamp Loại, để biết thêm thông tin. Để biết thông tin về cài đặt múi giờ trong các thiết lập sao chép, xem Phần & NBSP; 17.5.1.14, các chức năng sao chép và hệ thống của Hồi giáo và Phần & NBSP; 17.5.1.33, Sao chép và múi giờ.
Biến múi giờĐiền vào các bảng múi giờ
Nếu bạn có đặc quyền 9 (hoặc đặc quyền 0 không dùngMúi giờ mỗi phiên. Mỗi máy khách kết nối có cài đặt múi giờ phiên riêng, được đưa ra bởi biến 4 phiên. Ban đầu, biến phiên lấy giá trị của nó từ biến 4 toàn cầu, nhưng máy khách có thể thay đổi múi giờ của chính mình với câu lệnh này:Các giá trị múi giờ phiên toàn cầu và phiên hiện tại có thể được truy xuất như thế này: 2Các giá trị 5 có thể được đưa ra ở một số định dạng, không có giá trị nào nhạy cảm với trường hợp:
Điền vào các bảng múi giờMột số bảng trong lược đồ hệ thống 6 tồn tại để lưu trữ thông tin múi giờ (xem Phần & NBSP; 5.3, Lược đồ hệ thống MySQL). Quy trình cài đặt MySQL tạo các bảng múi giờ, nhưng không tải chúng. Để làm như vậy bằng tay, sử dụng các hướng dẫn sau.Ghi chú Các múi giờ được đặt tên chỉ có thể được sử dụng nếu các bảng thông tin múi giờ trong cơ sở dữ liệu 6 đã được tạo và điền vào. Mặt khác, việc sử dụng múi giờ được đặt tên dẫn đến lỗi:Điền vào các bảng múi giờzoneinfo database (the set of files describing time zones), use the mysql_tzinfo_to_sql program to load the time zone tables. Examples of such systems are Linux, macOS, FreeBSD, and Solaris. One likely location for these files is the 8 directory. If your system has no zoneinfo database, you can use a downloadable package, as described later in this section. Một số bảng trong lược đồ hệ thống 6 tồn tại để lưu trữ thông tin múi giờ (xem Phần & NBSP; 5.3, Lược đồ hệ thống MySQL). Quy trình cài đặt MySQL tạo các bảng múi giờ, nhưng không tải chúng. Để làm như vậy bằng tay, sử dụng các hướng dẫn sau.mysql_tzinfo_to_sql and send the output into the mysql
program. For example: 4Tải thông tin múi giờ không nhất thiết phải là hoạt động một lần vì thỉnh thoảng thông tin thay đổi. Khi những thay đổi đó xảy ra, các ứng dụng sử dụng các quy tắc cũ sẽ lỗi thời và bạn có thể thấy cần phải tải lại các bảng múi giờ để giữ thông tin được sử dụng bởi máy chủ MySQL của bạn hiện tại. Xem hiện tại với thay đổi múi giờ.mysql command shown here assumes that you connect to the server using an account such as 9 that has privileges for modifying tables in the 6 system schema. Adjust the connection parameters as required.
Nếu hệ thống của bạn có cơ sở dữ liệu ZoneInfo riêng (tập hợp các tệp mô tả múi giờ), hãy sử dụng chương trình MySQL_TZINFO_TO_SQL để tải các bảng múi giờ. Ví dụ về các hệ thống như vậy là Linux, MacOS, FreeBSD và Solaris. Một vị trí có khả năng cho các tệp này là thư mục Để tải các bảng múi giờ từ dòng lệnh, hãy truyền tên đường dẫn thư mục ZoneInfo đến mysql_tzinfo_to_sql và gửi đầu ra vào chương trình MySQL. Ví dụ: also can be used to load a single time zone file or generate leap second information:
Để tải một tệp múi giờ duy nhất 1 tương ứng với tên múi giờ 2, gọi mysql_tzinfo_to_sql như thế này:mysql_tzinfo_to_sql, restart the server so that it does not continue to use any previously cached time zone data. Với phương pháp này, bạn phải thực thi một lệnh riêng để tải tệp múi giờ cho mỗi vùng được đặt tên mà máy chủ cần biết. 7Nếu múi giờ của bạn phải tính đến các giây nhảy, hãy khởi tạo thông tin thứ hai như thế này, trong đó 1 là tên của tệp múi giờ của bạn:Sau khi chạy mysql_tzinfo_to_sql, hãy khởi động lại máy chủ để nó không tiếp tục sử dụng bất kỳ dữ liệu múi giờ được lưu trong bộ đệm trước đó.not use a downloadable time zone package if your system has a zoneinfo database. Use the mysql_tzinfo_to_sql utility instead. Otherwise, you may cause a difference in datetime handling between MySQL and other applications on your system. Nếu hệ thống của bạn không có cơ sở dữ liệu ZoneInfo (ví dụ: Windows), bạn có thể sử dụng gói chứa các câu lệnh SQL có sẵn để tải xuống tại Khu vực phát triển MySQL: 8Cảnh báo Nếu múi giờ của bạn phải tính đến các giây nhảy, hãy khởi tạo thông tin thứ hai như thế này, trong đó 1 là tên của tệp múi giờ của bạn:Sau khi chạy mysql_tzinfo_to_sql, hãy khởi động lại máy chủ để nó không tiếp tục sử dụng bất kỳ dữ liệu múi giờ được lưu trong bộ đệm trước đó.not use a downloadable time zone package that contains 4 tables. That is intended for older MySQL versions. MySQL now uses 5 for the time zone tables.
Trying to replace them with 4 tables causes problems. Nếu hệ thống của bạn không có cơ sở dữ liệu ZoneInfo (ví dụ: Windows), bạn có thể sử dụng gói chứa các câu lệnh SQL có sẵn để tải xuống tại Khu vực phát triển MySQL:Cảnh báo
Nếu bạn không chắc chắn liệu có sẵn các múi giờ được đặt tên, để sử dụng làm cài đặt múi giờ của máy chủ hoặc bởi các máy khách đặt múi giờ của riêng họ, hãy kiểm tra xem các bảng múi giờ của bạn có trống không. Truy vấn sau đây xác định liệu bảng có chứa tên múi giờ có bất kỳ hàng nào không: 9Một số 0 chỉ ra rằng bảng trống. Trong trường hợp này, hiện tại không có ứng dụng nào đang sử dụng các múi giờ được đặt tên và bạn không cần phải cập nhật các bảng (trừ khi bạn muốn bật hỗ trợ múi giờ được đặt tên). Một số lượng lớn hơn 0 chỉ ra rằng bảng không trống và nội dung của nó có sẵn để được sử dụng để hỗ trợ múi giờ được đặt tên. Trong trường hợp này, hãy chắc chắn tải lại các bảng múi giờ của bạn để các ứng dụng sử dụng các múi giờ được đặt tên có thể có được kết quả truy vấn chính xác. Để kiểm tra xem cài đặt MySQL của bạn có được cập nhật đúng cách để thay đổi quy tắc thời gian tiết kiệm ánh sáng ban ngày hay không, hãy sử dụng thử nghiệm như sau. Ví dụ sử dụng các giá trị phù hợp với thay đổi DST 1 giờ năm 2007 xảy ra ở Hoa Kỳ vào ngày 11 tháng 3 lúc 2 giờ sáng. Bài kiểm tra sử dụng truy vấn này: 0Hai giá trị thời gian cho biết thời gian thay đổi DST xảy ra và việc sử dụng các múi giờ được đặt tên yêu cầu sử dụng các bảng múi giờ. Kết quả mong muốn là cả hai truy vấn đều trả về cùng một kết quả (thời gian đầu vào, được chuyển đổi thành giá trị tương đương trong múi giờ 'Hoa Kỳ/Trung tâm'). Trước khi cập nhật các bảng múi giờ, bạn sẽ thấy một kết quả không chính xác như thế này: 1Sau khi cập nhật các bảng, bạn sẽ thấy kết quả chính xác: 2Múi giờ nhảy vọt thứ hai hỗ trợGiá trị thứ hai của Leap được trả về với một phần thời gian kết thúc bằng 0. Điều này có nghĩa là một hàm như 3 có thể trả về cùng giá trị trong hai hoặc ba giây liên tiếp trong lần nhảy thứ hai. Vẫn đúng là các giá trị thời gian theo nghĩa đen có phần thời gian kết thúc bằng 2 hoặc 3 được coi là không hợp lệ.Nếu cần phải tìm kiếm các giá trị 5 một giây trước khi bước nhảy thứ hai, có thể thu được kết quả dị thường nếu bạn sử dụng so sánh với các giá trị 5 '. Ví dụ sau đây chứng minh điều này. Nó thay đổi múi giờ phiên thành UTC vì vậy không có sự khác biệt giữa các giá trị 5 bên trong (có trong UTC) và các giá trị được hiển thị (có hiệu chỉnh múi giờ được áp dụng). 3Để làm việc xung quanh điều này, bạn có thể sử dụng một so sánh dựa trên giá trị UTC thực sự được lưu trữ trong cột, có hiệu chỉnh thứ hai bước nhảy vọt: 4
MySQL sử dụng múi giờ nào?Theo mặc định, múi giờ cho phiên bản DB MySQL được phối hợp thời gian phổ quát (UTC).Bạn có thể đặt múi giờ cho phiên bản DB của mình vào múi giờ cục bộ cho ứng dụng của bạn.Universal Time Coordinated (UTC). You can set the time zone for your DB instance to the local time zone for your application instead.
Làm thế nào xác định thời gian trong SQL?Có ba nơi mà múi giờ có thể được đặt trong MySQL:.. default-time-zone='+00:00'. Chọn @@ Toàn cầu..... Đặt toàn cầu Time_Zone = '+8: 00';Đặt toàn cầu Time_Zone = 'Châu Âu/Helsinki';Đặt @@ Toàn cầu..... Chọn @@ phiên..... Đặt Time_Zone = 'Châu Âu/Helsinki';Đặt Time_Zone = "+00: 00";Đặt @@ phiên .. |