MySQL의 현재 시간대 조회하기
MySQL에서 설정된 현재 시간대(time zone)를 확인하려면 시스템 변수인 @@global.time_zone과 @@session.time_zone을 함께 조회하면 됩니다. 전역(global) 시간대와 세션(session) 시간대가 각각 어떻게 설정되어 있는지 한 번에 파악할 수 있어 매우 유용합니다.
1. 시스템 변수로 시간대 확인
아래는 MySQL의 현재 시간대를 조회하는 기본 문법입니다.
mysql> SELECT @@global.time_zone, @@session.time_zone;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------------------+---------------------+ | @@global.time_zone | @@session.time_zone | +--------------------+---------------------+ | SYSTEM | SYSTEM | +--------------------+---------------------+ 1 row in set (0.00 sec)
결과가 SYSTEM으로 표시되는 이유는 MySQL이 별도의 시간대를 지정하지 않고 운영체제(OS)의 시스템 시간대를 그대로 사용하도록 설정되어 있기 때문입니다. 만약 특정 시간대로 변경하고 싶다면 SET GLOBAL time_zone = 'Asia/Seoul';과 같이 값을 직접 지정할 수 있습니다.
2. NOW() 함수로 실제 적용 시간 확인
또 다른 방법으로는 NOW() 함수를 활용하여 현재 세션에 실제로 적용되는 날짜와 시간을 직접 확인하는 것입니다. 예제를 위해 먼저 새로운 테이블을 생성해 보겠습니다.
mysql> create table CurrentTimeZone -> ( -> currenttimeZone datetime -> )ENGINE=MYISAM; Query OK, 0 rows affected (0.19 sec)
테이블이 정상적으로 생성되었다면, NOW() 함수의 반환값을 레코드로 삽입합니다.
mysql> INSERT INTO CurrentTimeZone values(now()); Query OK, 1 row affected (0.10 sec)
이제 저장된 데이터를 조회하여 현재 시간대가 반영된 시간을 확인할 수 있습니다.
mysql> select * from CurrentTimeZone;
실행 결과는 다음과 같습니다.
+---------------------+ | currenttimeZone | +---------------------+ | 2018-10-29 17:20:12 | +---------------------+ 1 row in set (0.00 sec)
정리
@@global.time_zone과 @@session.time_zone으로 설정값을 확인하고, NOW() 함수로 실제 적용된 시간을 검증하는 것이 MySQL 시간대 관리의 기본입니다. 서버와 애플리케이션 간 시간 불일치 문제를 방지하려면 두 가지 방법을 함께 활용하는 것이 좋습니다.