2013-10-08 3 views
0

아테네 시간대에 테이블의 항목을 삽입하거나 업데이트하려고합니다. 글로벌 서버 시간대를 설정할 수 없도록 공유 호스팅을 사용하고 있습니다.mysql time_zone이 사용되지 않았습니까?

나는이 여러 쿼리를 실행하면 :

SET time_zone="Europe/Athens"; 
SELECT NOW(); 

내가 원하는 아테네 시간을 얻을,하지만 난 뭔가를 실행하면
SET time_zone="Europe/Athens"; 
UPDATE `db`.`tbl` SET `the_time` = NOW() , `foo` = '1' WHERE `tbl`.`id` = 100; 

업데이트 항목을 설정 한 시간이 아직 서버의 시간

을 ! 왜 이런 일이 발생하며 어떻게 해결할 수 있습니까?

답변

0

MySQL은 TIMESTAMP 값을 현재 시간대에서 UTC로 변환하고 UTC에서 검색하기 위해 현재 시간대로 변환합니다. (이것은 DATETIME과 같은 다른 유형에서는 발생하지 않습니다.) 기본적으로 각 연결의 현재 시간대는 서버의 시간입니다. 시간대는 연결별로 설정할 수 있습니다. 시간대 설정이 일정하게 유지되는 한 저장하는 값과 동일한 값이 반환됩니다. TIMESTAMP 값을 저장 한 다음 시간대를 변경하고 값을 검색하면 검색된 값이 저장된 값과 다릅니다. 이는 같은 시간대가 양방향으로 변환에 사용되지 않았기 때문에 발생합니다. 현재 시간대는 time_zone 시스템 변수의 값으로 사용할 수 있습니다.

http://dev.mysql.com/doc/refman/5.6/en/datetime.html