2009-06-12 3 views
0

MySQL에 UTC datetime 값을 저장합니다. CONVERT_TZ를 사용하여 데이터베이스의 UTC에서 /로 로컬 datetimes를 쿼리/저장하는 시간대 변환을 처리합니다.MySQL이 CONVERT_TZ로 시간대 조정 후 초를 변경하는 이유는 무엇입니까?

테스트에서 나는 변환이 어떻게 작동하는지이 이상한 특질을 알아 차렸다. 누구든지 왜 MySQL이 -4시 00 분 오프셋을 사용할 때 23 초를 추가하는지 설명 할 수 있습니까? 그러나 동등한 표준 시간대 레이블을 사용할 때는 그렇지 않습니까?

select convert_tz('2009-06-12 01:00:00', 'UTC', '-4:00') 
2009-06-11 21:00:23 

select convert_tz('2009-06-12 01:00:00', 'UTC', 'US/Eastern') 
2009-06-11 21:00:00 

내 Windows XP 노트북에서 MySQL 5.0.67-community-nt-log를 실행 중입니다. 로컬로 호스팅 된 phpMyAdmin 3.1.5에서 쿼리를 실행 중이며 PHP 5.2.8에서 내 응용 프로그램 내에서이 쿼리를 볼 수도 있습니다.

내 Dreamhost 계정과 비교할 때 두 쿼리 모두 적절한 datetime ('2009-09-06 21:00:00')을 반환합니다. 이들은 Linux와 PHP 5.2.6에서 MySQL 5.0.45-log를 실행합니다.

왜 내 자신의 MySQL 설치에 이러한 불일치가 있습니까?

답변

2

아마도 2 회의 설치에서 표준 시간대 테이블이 다를 수 있습니다. 표준 시간대 데이터는 mysql 데이터베이스에있는 많은 테이블에 저장됩니다. MySQL이 제공하는 그들은 일반적으로 시스템 시간대 파일에서 생성되는 유닉스 시스템에서

하지만 윈도우 설치가 아마 사용되는 파일 :

http://dev.mysql.com/downloads/timezones.html

데이터는 윤초가 가능했다고. 사용하지 않으려면 다음 업데이트를 실행하십시오.

update mysql.time_zone set Use_leap_seconds ='N'; 

그런 다음 서버를 다시 시작하십시오.

관련 문제