2013-07-27 2 views
1

저는 유럽에서 운영되는 사무소의 콜센터 데이터를 저장하는 MYSQL 4.1 데이터베이스를 실행하고 있습니다.FROM_UNIXTIME에 관한 혼동

MY MYSQL 데이터베이스는 표준 시간대를 중부 유럽 표준 시간으로 설정 한 Windows 2003 서버에 위치하며, 이는 자동으로 일광 절약 시간으로 조정됩니다.

유럽의 고객에게 올바른 시간대의 로그 날짜와 시간을 보여주는 보고서를 생성하고 싶습니다.

내 데이터베이스는 호출의 로그 날짜/시간을 유닉스 타임 스탬프로 저장합니다. 따라서 날짜는 UTC로 저장됩니다. 로그 날짜 시간을 원하는 시간대로 쉽게 조정할 수있는 MYSQL 함수를 발견했습니다.

CONVERT_TZ입니다. (상세 정보 : http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_convert-tz)

예 : SELECT CONVERT_TZ('2004-01-01 12:00:00','UTC','CET');

내가 그 22시 12분

CONVERT_TZ(FROM_UNIXTIME(o.logdatex), 'UTC','CET') 'CET_L_DATETIME' 

2013년 1월 6일에 기록 된 호출이 적용하려 (logdatex는 대한 unxtimestamp입니다 전화가 기록되었습니다)

내 혼란에 성명 반환 - 2013-06-02 00:12:56.

나는 내가 단지 그것은 정확한 시간을 반환

FROM_UNIXTIME(o.logdatex)을 선택하면 반환 된 것을보고 싶어! 2013 년 6 월 1 일 22시 12 분 56 초 (이 전화는 암스테르담 사무실에서 기록되었습니다)

내 질문은 FROM_UNIXTIME 함수가 자동으로 시간대 MYSQL 서버가 설정 한대로 UTC에서 시간을 조정합니까? 내가 말하는 모든 설명서를 찾을 수 없습니다.

+0

4.1? 왜 10 살짜리 소프트웨어를 운영하고 있습니까? – Strawberry

+0

@Strawberry는 오타가 될 수 있습니다. 그 이유는 그가 5.1 매뉴얼을 참고하기 때문입니다. –

+0

@ Strawberry에게 도움이되는 의견을 보내 주셔서 감사합니다. –

답변

0

내가 가정 할 때 FROM_UNIXTIME(o.logdatex)을 수행하면 서버의 UTC에서 시간대로 변환되기 때문입니다. 그리고 지금 날짜가 UTC 시간대가 아닙니다. 따라서 CONVERT_TZ(FROM_UNIXTIME(o.logdatex), 'UTC','CET')에서 'UTC'가 아닌 서버의 시간대에서 변환하면 이상한 결과를 얻을 수 있습니다. FROM_UNIXTIME(o.logdatex)을 쿼리의 별도 필드로 선택하고 결과를 비교해보십시오.