MySQL có hỗ trợ múi giờ không?

Trong bài viết này, chúng tôi sẽ thảo luận về cách bạn có thể thay đổi múi giờ MySQL trên máy chủ của mình để dữ liệu được lưu trữ trong cơ sở dữ liệu của bạn theo mặc định sẽ sử dụng múi giờ mà bạn đã chỉ định

Rất nhiều lúc múi giờ địa phương của bạn sẽ khác với múi giờ của máy chủ MySQL và điều này có thể khiến bạn khó làm việc với dữ liệu bên trong cơ sở dữ liệu hơn. Sử dụng các bước sau, bạn có thể cập nhật múi giờ của máy chủ MySQL sao cho khớp với múi giờ của bạn để làm việc với dữ liệu này dễ dàng hơn

Thay đổi này sẽ yêu cầu quyền truy cập root vào VPS [Máy chủ riêng ảo] hoặc gói lưu trữ máy chủ chuyên dụng hoặc bạn có thể liên hệ với bộ phận hỗ trợ của chúng tôi để thay đổi điều này trên máy chủ của bạn. Bạn cũng có thể chỉ cần biết cách chuyển đổi thời gian MySQL không yêu cầu quyền truy cập root và có thể được thực hiện trên máy chủ dùng chung

Không có thời gian để đọc hướng dẫn đầy đủ?

Thay đổi múi giờ trong MySQL

  1. Đăng nhập vào máy chủ của bạn thông qua SSH với tư cách là người dùng root
  2. Bạn có thể xem cài đặt múi giờ hiện tại của MySQL bằng lệnh sau từ bảng điều khiển.
    mysql -e "SELECT @@global.time_zone;"
    Theo mặc định, bạn sẽ lấy lại một cái gì đó tương tự như.
    ______103

    Điều này là do theo mặc định, múi giờ MySQL của bạn sẽ được đặt thành thời gian HỆ THỐNG mặc định của máy chủ. Nếu bạn quan tâm đến việc thay đổi toàn bộ múi giờ của máy chủ, điều này có thể được thực hiện bằng cách đặt múi giờ trong WHM

  3. Bạn có thể xem dấu thời gian HỆ THỐNG của máy chủ bằng cách sử dụng lệnh sau.
    date

    Điều này sẽ trả lại một cái gì đó tương tự như thế này.
    ______104
  4. Bạn có thể xem dấu thời gian hiện tại được báo cáo bởi máy chủ MySQL bằng lệnh sau.
    mysql -e "SELECT NOW[];"
    Điều này sẽ trả lại dấu thời gian hiện tại.
    ______10
  5. Bây giờ bạn có thể chỉnh sửa tệp cấu hình MySQL bằng trình soạn thảo văn bản yêu thích của mình.
    vi /etc/my.cnf
    Sau đó chạy dòng sau để thay đổi từ EST [GMT -5. 00] đến CST [GMT -6. 00].
    default-time-zone = '-06:00'
    Bây giờ hãy lưu /etc/my. cnf với mặc định mới của bạn.
  6. Để kích hoạt thay đổi, bạn sẽ muốn khởi động lại dịch vụ MySQL bằng lệnh sau.
    service mysql restart
  7. Bây giờ nếu bạn thử xem lại cài đặt múi giờ toàn cầu bằng lệnh.
    mysql -e "SELECT @@global.time_zone;"
    Bây giờ, bạn sẽ lấy lại mặc định mới của mình.
    ______11
  8. Bây giờ bạn cũng sẽ thấy rằng hàm NOW[] cũng đã được cập nhật.
    mysql -e "SELECT NOW[];"
    Điều này sẽ trả lại dấu thời gian hiện tại.
    ______12

Bây giờ bạn đã biết cách cập nhật cài đặt múi giờ của máy chủ MySQL, để giúp đảm bảo dữ liệu được lưu trữ trong cơ sở dữ liệu dễ dàng cho bạn làm việc với. Bạn cũng có thể sử dụng các múi giờ được đặt tên thay vì GMT -6. 00, nhưng điều này trước tiên sẽ yêu cầu bạn tải các bảng múi giờ vào cơ sở dữ liệu mysql. Thông tin thêm về điều này có thể được tìm thấy trên trang MySQL liên quan đến mysql_tzinfo_to_sql và tải các bảng múi giờ

Việc xử lý múi giờ đôi khi có thể gây nhầm lẫn, đặc biệt là khi xử lý việc di chuyển dữ liệu sang một máy chủ khác chạy trên một múi giờ khác, khi chuyển sang múi giờ Giờ tiết kiệm ánh sáng ban ngày [DST] hoặc khi giới thiệu giây nhuận. Ngày được lưu trữ có còn ý nghĩa sau khi thay đổi cấu hình toàn hệ thống không?

Có rất nhiều tài liệu về MySQL và quản lý múi giờ, nhưng cũng có thông tin bị thiếu vì các tính năng và bản sửa lỗi mới liên tục được đưa vào Máy chủ MySQL trong lĩnh vực này. Vì vậy, tôi nghĩ rằng dành một vài từ ở đây để tóm tắt cách xử lý múi giờ tốt nhất và cập nhật thông tin này để phản ánh việc triển khai hiện tại có thể là một ý kiến ​​hay

Các chương Toàn cầu hóa MySQL ghi lại mọi thứ bạn cần biết để xử lý các múi giờ và bộ ký tự

Cài đặt múi giờ MySQL

Trước hết, hãy tóm tắt các tham số cấu hình ảnh hưởng đến cách MySQL hoạt động với các múi giờ là gì. Có thể định cấu hình múi giờ bằng các tham số sau

  • –timezone Điều này được sử dụng với mysqld_safe và đặt biến môi trường TZ thành múi giờ mong muốn
  • system_time_zone Điều này tương ứng với múi giờ được kế thừa từ TZ được định cấu hình hệ điều hành hoặc múi giờ được định cấu hình qua mysqld_safe với –timezone
  • time_zone Điều này khởi tạo múi giờ cho các kết nối máy khách, thường được mặc định là HỆ THỐNG, do đó kế thừa cùng một giá trị như system_time_zone. Nếu khách hàng muốn cài đặt múi giờ khác, hãy sử dụng biến này
  • –công cụ sửa đổi dòng lệnh default-time-zone khởi tạo time_zone thành giá trị mặc định mong muốn
  • log_timestamps Nó đặt múi giờ của dấu thời gian trong các thông báo được ghi vào nhật ký lỗi, nhật ký truy vấn chung và truy vấn chậm. Giá trị mặc định là UTC

Ngoài ra còn có một cài đặt khác đáng lưu ý và đó là thời gian hiện tại của khách hàng, có thể định cấu hình bằng cách sử dụng biến dấu thời gian. Không thực sự liên quan đến múi giờ, nhưng đáng để biết. Nó đặt thời gian mong muốn để khách hàng khôi phục từ e. g. nhật ký nhị phân và bao gồm câu lệnh NOW[]. Vì vậy, nó ảnh hưởng đến giá trị được trả về bởi NOW[]

MySQL kế thừa múi giờ của hệ điều hành

Một trong những tùy chọn khả thi để thay đổi múi giờ của hệ thống MySQL là thay đổi múi giờ của hệ điều hành. MySQL sẽ kế thừa múi giờ của hệ điều hành để khởi tạo

date
19 khi bắt đầu. Hãy xem lại các lệnh sẽ được sử dụng trong Linux để đọc cài đặt múi giờ hiện tại của hệ điều hành

Khám phá múi giờ hiện tại

date
2____13

Thay đổi múi giờ

date
4

Liệt kê các múi giờ có sẵn

date
5

Thay đổi múi giờ của hệ thống MySQL và máy khách

Thay vì thay đổi múi giờ của hệ điều hành để nó được tải vào thời điểm bắt đầu của MySQL [lần lượt khởi tạo

date
19], có thể đặt MySQL
date
19 bằng một trong hai cách sau:

  • Đặt biến môi trường TZ
  • Khởi động lại máy chủ bằng cách sử dụng –timezone với
    date
    82

Lưu ý rằng sử dụng một trong hai phương pháp sẽ không thành công với lỗi sau nếu các vùng không được nhập vào MySQL trước

date
1

Kết quả tương tự nếu cố gắng đặt time_zone

date
8

Sau đó, hãy nhập thông tin múi giờ vào MySQL, tận dụng lợi thế của mysql_tzinfo_to_sql

mysql -e "SELECT NOW[];"
1

Các cảnh báo có thể bị bỏ qua, chúng được báo cáo khi công cụ cố gắng nhập các tệp linh tinh không liên quan được lưu trữ trong thư mục

date
83. Bây giờ các bảng vùng đã được tải vào MySQL, có thể xác minh chúng

mysql -e "SELECT NOW[];"
3

Hiện có thể đặt múi giờ hệ thống mong muốn bằng cách đặt biến môi trường tương ứng [nó sẽ cần khởi động lại]

mysql -e "SELECT NOW[];"
4

Phương pháp thay thế để đặt múi giờ hệ thống đang sử dụng –timezone với

date
82. Sau khi khởi động lại máy chủ, hiện đã hoàn tất thành công, hãy kiểm tra

mysql -e "SELECT NOW[];"
6

Tùy chọn này sẽ tránh thay đổi múi giờ của hệ điều hành. Các giá trị có thể có cho –timezone hoặc TZ phụ thuộc vào hệ thống. Tham khảo tài liệu hệ điều hành của bạn để xem giá trị nào được chấp nhận. Giờ đây, khách hàng có thể đặt

date
85 thành múi giờ mong muốn tùy ý cho phiên

date
30

Di chuyển máy chủ

Hãy xem điều gì sẽ xảy ra với dữ liệu được lưu trữ khi múi giờ của hệ điều hành thay đổi [hoặc thay đổi là bắt buộc, như thường lệ, do thay đổi đối với biến môi trường TZ]. Hãy chú ý đến

date
86. Nếu chúng ta chèn một bảng

date
31

Với dữ liệu

date
32

Và sau đó chúng tôi cố gắng truy xuất nó, nó sẽ chính xác cho đến khi chúng tôi vẫn giữ nguyên cài đặt múi giờ

date
33

Nhưng nếu chúng tôi khởi động lại máy chủ trên một múi giờ khác [e. g. một máy chủ sử dụng một biến môi trường TZ khác]

date
34

Sau đó, DATETIME sẽ được giữ nguyên, nhưng DẤU THỜI GIAN sẽ được diễn giải bằng cách sử dụng

date
85 khác, kế thừa từ
date
86. Đây là điểm khác biệt của DATETIME với TIMESTAMP. DATETIME luôn được đọc "nguyên trạng", trong khi TIMESTAMP được tính theo phiên
date
85

date
35

Tại thời điểm này, có thể làm cho múi giờ của máy chủ thay đổi không ảnh hưởng đến kết quả bằng cách đặt

date
36

tuyên bố hữu ích

Cho đến nay, bạn đã thấy mối quan hệ giữa HĐH và MySQL liên quan đến cài đặt múi giờ là gì. Trước khi xem xét các ví dụ khác, đây là một số câu lệnh MySQL có thể hữu ích

Chọn một cột dấu thời gian ở định dạng UTC

date
37

Chọn ngày giờ hiện tại trong múi giờ phiên

date
38
date
39

Chọn ngày giờ hiện tại theo UTC

date
40
date
41

Lấy đồng bằng múi giờ hiện tại từ UTC

date
42

Nhận dấu thời gian UNIX hiện tại [tính bằng giây]

date
43
date
44

DẤU THỜI GIAN, DATETIME và chênh lệch múi giờ

Trước khi xem xét sâu về sự khác biệt giữa TIMESTAMP và DATETIME, hãy nhớ rằng MySQL Server 8. 0. 19 độ lệch múi giờ được giới thiệu, cho phép chỉ định ngày ở định dạng này

date
45

Kiểm tra ghi chú phát hành, yêu cầu tính năng và nhật ký công việc liên quan. Bây giờ tôi sẽ chia sẻ một số chi tiết về lưu trữ và truy xuất giá trị ngày giờ và dấu thời gian

sự kiện DẤU THỜI GIAN

Từ mô tả nhật ký công việc, chúng tôi có

  • DẤU THỜI GIAN không có độ lệch được lưu trữ trong UTC, do đó được chuyển đổi thành UTC từ
    mysql -e "SELECT NOW[];"
    10 hiện tại
  • DẤU THỜI GIAN có độ lệch. Giá trị ngày/giờ nội bộ sẽ được điều chỉnh thành UTC bằng cách trừ đi phần bù múi giờ [nhưng không phải là
    mysql -e "SELECT NOW[];"
    10] trước khi được lưu trữ
  • DẤU THỜI GIAN khi đọc được chuyển thành
    mysql -e "SELECT NOW[];"
    10 của kết nối tương ứng

sự kiện DATETIME

  • DATETIME không có phần bù được lưu trữ "nguyên trạng" và được coi là được lưu trữ trong
    mysql -e "SELECT NOW[];"
    10 cục bộ
  • DATETIME với phần bù. Giá trị ngày/giờ nội bộ sẽ được điều chỉnh thành UTC bằng cách trừ đi phần bù múi giờ và điều chỉnh giá trị ngày/giờ thành giờ địa phương bằng cách thêm giá trị của biến phiên
    mysql -e "SELECT NOW[];"
    10, trước khi được lưu trữ
  • DATETIME được đọc “nguyên trạng” bất kể
    mysql -e "SELECT NOW[];"
    10. Nó phải được giải thích liên quan đến ngữ cảnh mà nó được đặt [cục bộ
    mysql -e "SELECT NOW[];"
    10] và ứng dụng phải tính đến điều đó

ví dụ

Sử dụng lại định nghĩa bảng này

date
31

Với các cài đặt múi giờ này

date
47

Hãy chèn một số dữ liệu

date
48
date
49

Hàng đầu tiên có

  1. ngày giờ có bù '2017-11-13 10. 20. 19+04. 00′ được chuyển thành UTC, do đó ‘2017-11-13 06. 20. 19’ UTC
  2. Ngày giờ UTC sau đó được lưu dưới dạng giờ địa phương [EST] áp dụng cho
    mysql -e "SELECT NOW[];"
    10, tức là ‘-05. 00. 00’ [CHỌN TIMEDIFF[NOW[], UTC_TIMESTAMP];]
  3. đưa chúng ta đến giờ địa phương ‘2017-11-13 01. 20. 19 EST. Điều này sẽ được lưu trữ và sẽ được trả lại bất kể là
    mysql -e "SELECT NOW[];"
    10 hiện tại
  4. phần bù không còn khả dụng nữa, khi ngày giờ được lưu trữ. Phải là khách hàng biết rằng điều này đã được lưu trữ trong EST. Thông thường, một tùy chọn thuận tiện sẽ được lưu trữ trong UTC, do đó, với
    mysql -e "SELECT NOW[];"
    10=‘UTC’
  5. dấu thời gian được chuyển thành UTC, do đó '2017-11-13 10. 20. 19+04. 00’ trở thành ‘2017-11-13 06. 20. 19’ bằng cách áp dụng phần bù, nhưng không phải
    mysql -e "SELECT NOW[];"
    10
  6. Nó được lưu trữ ở dạng UTC, sau đó nó được lưu trữ dưới dạng '2017-11-13 06. 20. 19’ UTC
  7. khi đọc, nó được chuyển đổi sang múi giờ địa phương
    mysql -e "SELECT NOW[];"
    10 [khác với ngày giờ, không được chuyển đổi mà đọc “nguyên trạng”], sau đó áp dụng phần bù ‘-05. 00. 00’ [EST] nó trả về ‘2017-11-13 01. 20. 19’

hàng thứ hai

  1. ngày giờ là giờ EST địa phương và được lưu trữ "nguyên trạng" và được đọc là "nguyên trạng". Vậy là '2018-11-13 10. 20. 19’
  2. dấu thời gian được lưu trữ ở dạng UTC ‘2017-11-13 15. 20. 19' [không có phần bù, phải áp dụng
    mysql -e "SELECT NOW[];"
    10 để có chuyển đổi EST thành UTC], nhưng giá trị đọc trả về '2018-11-13 10. 20. 19’, bởi vì dấu thời gian được chuyển đổi thành giờ địa phương
    mysql -e "SELECT NOW[];"
    10 [EST]

Hãy chơi một chút

date
50
date
51

Liệu nó có ý nghĩa? . Vì vậy, nó được trả lại theo cách nó được lưu trữ trong đoạn văn trước

Ví dụ DATETIME và TIMESTAMP

Lần đầu tiên khi tôi kiểm tra các ví dụ từ tài liệu, tôi thừa nhận rằng tôi đã phải suy nghĩ trong giây lát. Nhưng đề cập đến các quy tắc được tóm tắt trước đây là “sự thật”, mọi thứ đều rõ ràng và mạch lạc. Hãy đi qua ví dụ từng bước. Hãy xem xét múi giờ của hệ thống EST

date
52

Điều đó có sự thay đổi sau từ UTC

date
53

Sau đó, hãy tạo các bảng để kiểm tra cả hai loại

date
54
date
55

Và chúng ta hãy tiến hành chèn dữ liệu vào bảng DATETIME

date
56____157

Đây là những gì được trả về từ bảng DATETIME

date
58

Giải thích [xem các sự kiện DATETIME trước đó để biết các quy tắc]

  1. ‘2020-01-01 10. 10. 10’ là EST, được lưu trữ và đọc như vậy
  2. ‘2020-01-01 10. 10. 10+05. 30’ là ‘2020-01-01 04. 40. 10’ UTC, được chuyển đổi thành EST là ‘2019-12-31 23. 40. 10', được lưu trữ và đọc như vậy
  3. ‘2020-01-01 10. 10. 10-08. 00’ là ‘2020-01-01 18. 10. 10’ UTC, được chuyển đổi thành EST là ‘2020-01-01 13. 10. 10', được lưu trữ và đọc như vậy
  4. ‘2020-01-01 10. 10. 10' là UTC, được lưu trữ và đọc như vậy [
    mysql -e "SELECT NOW[];"
    10 đã được đặt thành '+00. 00’]
  5. ‘2020-01-01 10. 10. 10+05. 30′ là ‘2020-01-01 04. 40. 10' UTC, được lưu trữ và đọc như vậy [
    mysql -e "SELECT NOW[];"
    10 đã được đặt thành '+00. 00’]
  6. ‘2020-01-01 10. 10. 10-08. 00’ là ‘2020-01-01 18. 10. 10' UTC, được lưu trữ và đọc như vậy [
    mysql -e "SELECT NOW[];"
    10 đã được đặt thành '+00. 00’]

Bây giờ hãy chèn bảng TIMESTAMP

date
59
date
57

Đây là những gì được trả về từ bảng TIMESTAMP

date
11

Giải thích [xem các sự kiện TIMESTAMP trước đó để biết các quy tắc]

  1. ‘2020-01-01 10. 10. 10’ được điều chỉnh thành UTC và được lưu dưới dạng ‘2020-01-01 13. 10. 10’ nhưng đọc là EST ‘2020-01-01 10. 10. 10’
  2. ‘2020-01-01 10. 10. 10+05. 30’ được lưu dưới dạng ‘2020-01-01 04. 40. 10’ UTC, nhưng đọc là EST [UTC -05. 00] là ‘2019-12-31 23. 40. 10’
  3. ‘2020-01-01 10. 10. 10-08. 00’ được lưu dưới dạng ‘2020-01-01 18. 10. 10’ UTC nhưng đọc là EST [UTC -05. 00] là ‘2020-01-01 13. 10. 10’
  4. ‘2020-01-01 10. 10. 10’ đã là UTC, được lưu trữ như vậy và đọc ‘2020-01-01 05. 10. 10’
  5. ‘2020-01-01 10. 10. 10+05. 30’ được lưu dưới dạng ‘2020-01-01 04. 40. 10’ UTC nhưng đọc là EST [UTC -05. 00] là ‘2019-12-31 23. 40. 10’
  6. ‘2020-01-01 10. 10. 10-08. 00’ được lưu dưới dạng ‘2020-01-01 18. 10. 10’ UTC nhưng đọc là EST [UTC -05. 00] là ‘2020-01-01 13. 10. 10’

Ví dụ UNIX_TIMESTAMP

Một lần nữa chúng ta hãy xem việc sử dụng offset để có các chuỗi UTC rõ ràng. Khi một phần bù được chỉ định, sẽ không có phép tính nào đối với @@time_zone. nghĩa đen đã được thể hiện dưới dạng UTC, nó được chuyển đổi thành UTC mà không cần bù đắp cho việc sử dụng/lưu trữ

date
12
date
13

Điều này đang chuyển đổi dấu thời gian có độ lệch thành '2015-11-13 09. 20. 19' và trả về giây kể từ '1970-01-01 00. 00. 00’ UTC. Bây giờ chúng ta hãy thay đổi

mysql -e "SELECT NOW[];"
10

date
14
date
15

Dấu thời gian ở địa phương

mysql -e "SELECT NOW[];"
10, CET, là UTC+1. Vì vậy, những giây kể từ '1970-01-01 00. 00. 00’ UTC được trả lại cho ‘2015-11-13 09. 20. 19’

Bây giờ, chuyển sang địa phương với UTC

date
50

Chữ ‘2015-11-13 09. 20. 19' không cần bất kỳ chuyển đổi nào, nó đã sẵn sàng để đưa vào UNIX_TIMESTAMP vì nó đã là UTC

date
17

Điểm rút ra & khuyến nghị

  • Đặt
    date
    19 bằng cách đặt biến môi trường TZ. Nó cũng có thể được chỉ định bằng cách sử dụng tùy chọn
    mysql -e "SELECT NOW[];"
    42 của
    date
    82
  • Nếu múi giờ thay đổi trên máy chủ [e. g. thay đổi múi giờ DST], cần phải khởi động lại máy chủ để nó được phản ánh tới
    date
    19
  • Để đặt @@time_zone toàn cầu, hãy khởi động máy chủ với
    mysql -e "SELECT NOW[];"
    45
  • mysql -e "SELECT NOW[];"
    10 có thể được đặt cho mỗi phiên
  • Nếu
    mysql -e "SELECT NOW[];"
    10 được đặt thành HỆ THỐNG, mọi lệnh gọi hàm MySQL yêu cầu tính toán múi giờ sẽ thực hiện lệnh gọi thư viện hệ thống để xác định múi giờ hệ thống hiện tại. Cuộc gọi này có thể được bảo vệ bởi một mutex toàn cầu, dẫn đến tranh chấp
  • Đặt mọi thứ thành UTC sẽ bỏ qua tất cả các vấn đề về nhầm lẫn múi giờ và sự mơ hồ của DST
  • Một tùy chọn để lưu trữ DATETIME và tránh nhầm lẫn sẽ là lưu trữ ngày và giờ dưới dạng cột DATETIME và lưu trữ múi giờ [như “America/Los_Angeles”] trong một cột VARCHAR khác
  • CONVERT_TZ cần bản gốc
    date
    85
  • Các cột DATETIME không bị thay đổi bởi cài đặt múi giờ cơ sở dữ liệu sau khi được lưu trữ. Chúng sẽ lưu trữ và truy xuất cùng một giá trị mọi lúc, độc lập với múi giờ của máy khách đã định cấu hình
  • Kiểm tra các trường hợp phụ khi chuyển đổi loại được thực hiện trong so sánh
  • Luôn cập nhật với những thay đổi về múi giờ
  • Sử dụng so sánh UTC để loại bỏ các vấn đề với giây nhảy vọt, kiểm tra tài liệu
  • Bắt đầu với MySQL 8. 0. 22, CAST[] hỗ trợ truy xuất giá trị DẤU THỜI GIAN như ở UTC, sử dụng toán tử AT TIMEZONE
  • Kể từ MySQL 8. 0. 26, ngoài khởi tạo thời gian khởi động, nếu múi giờ của máy chủ lưu trữ thay đổi [ví dụ: do thời gian tiết kiệm ánh sáng ban ngày],
    date
    86 phản ánh sự thay đổi đó
  • Và những gì về nhân rộng?

MDS thì sao?

Và nếu bạn đang thắc mắc về cài đặt mặc định múi giờ cho Hệ thống cơ sở dữ liệu dịch vụ cơ sở dữ liệu MySQL, thì đây là

date
18

Phần kết luận

Tôi đã chia sẻ một số điểm cơ bản cần lưu ý khi lập kế hoạch lưu trữ ngày và giờ. Tôi sẽ viết nhiều hơn trong tương lai để quan tâm đến khách hàng [chẳng hạn như thời gian C/J và đề xuất]. Tôi hy vọng bản tóm tắt này sẽ hữu ích và vui lòng bình luận để chia sẻ các đề xuất, nghi ngờ và báo cáo bất kỳ trường hợp phụ nào mà bạn biết. Cảm ơn vì đã đọc

MySQL có lưu trữ múi giờ không?

MySQL chuyển đổi các giá trị DẤU THỜI GIAN từ múi giờ hiện tại sang UTC để lưu trữ và ngược lại từ UTC sang múi giờ hiện tại để truy xuất. [Điều này không xảy ra đối với các loại khác như DATETIME. ] Theo mặc định, múi giờ hiện tại cho mỗi kết nối là thời gian của máy chủ.

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ó phải là giờ UTC không?

Trong MySQL, UTC_TIMESTAMP trả về ngày và giờ UTC hiện tại dưới dạng giá trị trong 'YYYY-MM-DD HH. MM. SS' hoặc YYYYMMDDHHMMSS .

Tôi có nên sử dụng múi giờ trong cơ sở dữ liệu không?

Cơ sở dữ liệu sẽ chuyển đổi bất kỳ ngày giờ nào thành kỷ nguyên UTC để lưu trữ nội bộ. Tuy nhiên, một số cơ sở dữ liệu có thể cho phép lưu trữ thông tin múi giờ. Nếu đúng như vậy, bạn nên chuyển đổi tất cả các ngày thành UTC trước khi lưu trữ . Không sử dụng múi giờ địa phương.

Chủ Đề