2010-02-18 21 views
6

Hoặc là tôi đang ngu ngốc hoặc có điều gì đó sai ở đây.Làm thế nào để chọn UTC_TIMESTAMP() trả về -10: 00 UTC?

Tôi có hai máy chủ SQL, một là trên máy tính địa phương của tôi (giờ địa phương 2 giờ) và thứ hai là ở một nơi khác (NOW() dường như trở 8 giờ) và tôi truy cập nó thông qua phpMyAdmin. Tôi có một bảng có cột DATETIME. Tôi đang cố gắng

để lưu trữ các hiện GMT/UTC thời gian và sau đó hiển thị nó một lần nữa, vẫn như giờ thời gian/UTC.

Ban đầu tôi đã lưu DATE_SUB(NOW(), INTERVAL 8 HOUR) hoạt động tốt. Tuy nhiên, sau đó tôi đọc về UTC_TIMESTAMP() và thích nó hơn, như nó đã được rút ngắn và các MySQL manual thậm chí còn nói:

"Các hiện cài đặt múi giờ không ảnh hưởng đến giá trị hiển thị theo chức năng như UTC_TIMESTAMP() hoặc giá trị trong DATE, TIME hoặc DATETIME cột. "

Vì vậy, hoàn hảo phải không? Ngoại trừ không.

Giả sử hiện tại GMT là 2010-02-18 17:18:17 (Tôi thậm chí đã kiểm tra kỹ nó với một người nào đó ở Anh).

On địa phương của tôi (2) máy chủ, tôi nhận được kết quả như sau cho các truy vấn sau đây:

SELECT NOW(); 2010-02-18 19:18:17 

SELECT UTC_TIMESTAMP(); 2010-02-18 17:18:17 

On máy chủ trực tuyến của tôi tôi nhận được:

SELECT NOW(); 2010-02-19 01:18:17 

SELECT UTC_TIMESTAMP(); 2010-02-19 07:18:17 (WHY?!) 

Am I thiếu một cái gì đó ?!

+0

tôi đang gặp phải vấn đề tương tự. – diEcho

Trả lời

10

Có thể do đồng hồ không đúng trên máy chủ trực tuyến?

Cố gắng chạy này:

SELECT @@system_time_zone, NOW(), UTC_TIMESTAMP() 

và xem những khu vực hiện nó trở lại và nó phù hợp với sự khác biệt.

+0

@@ system_time_zone \t NOW() \t UTC_TIMESTAMP() CST \t 2010-02-19 01:35:30 \t 2010-02-19 07:35:30 Vì vậy, nếu tôi hiểu đúng này, máy chủ nói rằng đó là CST (-6) và nó được thiết lập để 1:35 am, do đó, SQL nói tốt sau đó thêm 6 để đến UTC ... BAH! Bực bội như thế nào. Cảm ơn bạn đã xóa nó đi, tôi nghĩ tôi đã làm sai điều gì đó khiến tôi phát điên. – Alex

+0

Tại sao bực bội đó? NOW() là thời gian hiện tại sau khi múi giờ có hiệu lực, vì vậy các chức năng đang thực hiện công việc của họ một cách hoàn hảo không? – deed02392

+0

@ Alex Tôi nghĩ rằng logic/giải thích MySQL có ý nghĩa hoàn chỉnh, btw, vì vậy cái nào không đúng theo múi giờ của nó tức là máy chủ cục bộ hoặc máy chủ trực tuyến của bạn? – sactiw

Các vấn đề liên quan