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

Cài đặt máy chủ Web và Cơ sở dữ liệu để có đúng múi giờ UTC

Nếu bạn tự giới hạn mình trong các kiểu DATE và DATETIME của MySQL, bạn có thể bỏ qua phần lớn các vấn đề về múi giờ trong chính MySQL. Bạn muốn tránh loại TIMESTAMP của MySQL vì:

Đối với việc đọc / ghi các giá trị DATETIME, bạn sẽ nhận lại được chính xác những gì bạn đã đưa vào, điều này thật tốt.

Điều đó khiến bạn gặp vấn đề về việc luôn đảm bảo rằng bạn đang ghi các giá trị UTC vào cơ sở dữ liệu.

Cách tốt nhất để đảm bảo rằng PHP đang sử dụng UTC là đặt nó một cách rõ ràng trong ứng dụng của bạn bằng cách sử dụng date_default_timezone_set () . Điều đó sẽ đảm bảo rằng các cuộc gọi như date('Y-m-d H:i:s') sẽ cung cấp cho bạn giá trị UTC. Nó cũng sẽ đảm bảo rằng một cái gì đó như (new \DateTime('now'))->getTimezone() sẽ trả về một phiên bản UTC \ DateTimeZone.

Tất nhiên, bạn cần lưu ý rằng mọi thứ trở nên khó khăn hơn đáng kể khi bạn lưu trữ các giá trị ngày / giờ mà bạn lấy từ người dùng. Trong những trường hợp đó, bạn sẽ cần phải xác định bằng cách nào đó múi giờ của người dùng và xử lý chuyển đổi sang UTC trước khi duy trì các giá trị. Giả sử người dùng của bạn có một số cài đặt múi giờ cho mỗi người dùng, về cơ bản bạn làm điều gì đó như:

/** @var \DateTimeZone $userTZ */
$userTz = getUserTimezone();
$dateTime = new \DateTime($user_submitted_date_string, $userTz);
$dateTime->setTimezone(new \DateTime('UTC'));
$dateTimeStr = $dateTime->format('Y-m-d H:i:s');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi cú pháp PDO Mysql 1064

  2. Chuyển đổi chuỗi sang định dạng dấu thời gian MySQL trong php

  3. thiết kế cơ sở dữ liệu, tạo một bảng tới một số điểm và một số loại con trỏ đệ quy

  4. Làm thế nào để viết một truy vấn SQL đếm số hàng mỗi tháng và năm?

  5. SQL:Giới hạn về CASE (số lượng điều kiện WHEN, THEN)