MySQL CONVERT_TZ() 문제
데이터베이스에서 시간대를 사용하여 작업할 때, 특히 일광 절약 시간(DST)을 사용하는 경우 다음 사항이 중요합니다. 정확한 변환을 보장합니다. 다음은 MySQL CONVERT_TZ() 함수와 관련된 몇 가지 문제와 해결 방법입니다:
Q1. 시간대 이름의 정확성
예, 맞습니다. "US/Eastern"과 같은 시간대 이름을 지정하면 자동으로 일광 절약 시간이 적용됩니다. CONVERT_TZ('00:00:00', 'UTC', 'US/EASTERN')은 실제로 DST로 인해 1월 1일과 7월 1일에 다른 결과를 산출해야 합니다.
Q2. 시간대 테이블 업데이트
MySQL은 시간대 테이블 세트를 사용하여 다양한 시간대에 대한 현재 오프셋을 결정합니다. 이러한 테이블의 최신 버전을 사용하지 않는 경우 CONVERT_TZ() 함수가 올바르게 작동하지 않을 수 있습니다. 다음 쿼리를 실행하여 시간대 테이블이 최신인지 확인할 수 있습니다.
SELECT VERSION() FROM mysql.time_zone_name;
출력에 '2018h'보다 낮은 버전 번호가 표시되면 다음을 실행하여 테이블을 업데이트해야 합니다. 다음 명령:
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
Q3. CONVERT_TZ()
의 "NULL" 결과 "NULL" 결과는 시간대 테이블이 제대로 설치되거나 초기화되지 않았음을 나타낼 수 있습니다. 이를 확인하려면 다음 쿼리를 실행하세요.
SELECT COUNT(*) FROM mysql.time_zone;
결과가 0이면 시간대 테이블이 비어 있다는 의미입니다. 이 경우 위에서 언급한 명령을 사용하여 설치할 수 있습니다.
대체 솔루션
CONVERT_TZ()는 일반적으로 시간대 변환에 신뢰할 수 있는 솔루션이지만 다음이 있습니다. 시간대 테이블이 필요 없는 대체 접근 방식입니다. UTC로부터의 사용자 시간대 오프셋을 시간 단위로 저장하고 다음 쿼리를 사용하여 UTC 시간을 사용자의 현지 시간으로 변환할 수 있습니다.
SELECT UTC_TIMESTAMP() + INTERVAL user_timezone_offset_in_hours HOUR;
이 방법은 시간대 테이블이 필요하지 않으며 구현하기가 비교적 간단합니다. .
위 내용은 정확한 시간대 변환을 위해 MySQL의 CONVERT_TZ() 함수 문제를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!