Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 현재 시간대(Time Zone)를 확인하는 방법

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 시간대 관리의 기본입니다. 서버와 애플리케이션 간 시간 불일치 문제를 방지하려면 두 가지 방법을 함께 활용하는 것이 좋습니다.