2010-02-18 4 views
6

나는 어리 석거나 뭔가 잘못되었습니다. (NOW()는 GMT+8를 반환하는 것) 내가 phpMyAdmin을 통해 액세스 내가이 개 SQL 서버가SELECT UTC_TIMESTAMP()는 -10시 UTC를 어떻게 반환 할 수 있습니까?

는 사람은 내 로컬 컴퓨터 (현지 시간 2 GMT)에 있고 다른 하나는 다른 곳이다. 나는 DATETIME 컬럼을 가진 테이블을 가지고있다. 나는 GMT/UTC 시간으로 여전히 현재 GMT/UTC 시간을 저장 한 다음 다시 표시

을 시도하고있다.

원래는 DATE_SUB(NOW(), INTERVAL 8 HOUR)이 저장되어 있습니다. 그러나, 나는 약 UTC_TIMESTAMP()을 읽고 짧은이고 MySQL manual도 말했듯이, 그것을 더 좋아 :

"이러한 UTC_TIMESTAMP (같은 기능 에 의해 표시 값) 또는 값에 영향을주지 않습니다 현재 시간대 설정 DATE, TIME 또는 DATETIME 열을. "

그래서 완벽할까요? 아니요.

가정 해 보겠습니다. GMT는 2010-02-18 17:18:17입니다 (영국에서 누군가와 중복 확인).

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

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

내 온라인 서버에서 내가 얻을 :

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

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

암의 I 내 로컬 (+2) 서버, 나는 다음과 같은 쿼리에 대해 다음과 같은 결과를 얻을에

무언가를 놓침?!

+0

같은 문제가 있습니다. – diEcho

답변

10

아마 온라인 서버에서 시계가 잘못 되었기 때문에?

이를 실행 해보십시오 :

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

하고 돌아 않으며,이 차이를 일치 않는 영역을 참조하십시오.

+0

@@해서 system_time_zone \t NOW() \t UTC_TIMESTAMP() CST \t 2010-02-19 1시 35분 30초 \t 2010-02-19 7시 35분 30초 그래서,이 권리를 이해하고있어 경우, 서버 그것은 중부 표준시 (-6)이며 오전 1시 35 분으로 설정되어 있으므로 SQL은 잘 6을 추가하여 UTC에 도달하게됩니다. BAH! 얼마나 초조해. 문제를 해결해 주셔서 고맙습니다. 내가 잘못 생각한 것 같습니다. 제 정신이 아니 었습니다. – Alex

+0

그게 왜 실망 스럽습니까? NOW()는 현재 시간대가 적용된 이후의 현재 시간이므로 함수는 완벽하게 작동하지 않습니다. – deed02392

+0

@Alex MySQL 논리/설명이 완전한 의미를 갖게한다고 생각합니다. 따라서 어느 지역의 시간대 즉 로컬 서버 또는 온라인 서버가 올바르지 않습니까? – sactiw

관련 문제