MySQL에서 NOW(), CURDATE() 함수가 UTC를 사용하도록 설정하기
MySQL의 NOW()와 CURDATE() 함수가 UTC(협정 세계시)를 기준으로 동작하도록 만들려면 my.cnf 설정 파일을 수정해야 합니다. 아래와 같은 내용을 my.cnf 파일에 추가하면 됩니다.
[mysqld_safe] timezone = UTC
1단계: 데이터 디렉터리 위치 확인
먼저 다음 쿼리를 실행하여 MySQL 데이터 디렉터리의 위치를 확인합니다.
mysql> select @@datadir;
실행 결과는 다음과 같습니다.
+---------------------------------------------+ | @@datadir | +---------------------------------------------+ | C:\ProgramData\MySQL\MySQL Server 8.0\Data\ | +---------------------------------------------+ 1 row in set (0.00 sec)
2단계: my.cnf 파일 편집
쿼리 결과로 확인된 경로로 이동한 후, 해당 디렉터리에서 my.cnf 파일을 찾아 편집합니다. Windows 시스템 기준으로는 일반적으로 MySQL 설치 경로 하위에서 파일을 찾을 수 있습니다.
my.cnf 파일 내 [mysqld] 섹션 아래에 다음 옵션을 추가합니다.
[mysqld_safe] timezone = UTC
이 설정은 한 번만 지정해 두면 됩니다. 페이지를 로드할 때마다 작성할 필요가 없으며, my.cnf 파일에 한 번 추가해 두면 이후 모든 세션과 페이지 로드에 자동으로 적용됩니다.
3단계: 세션별 시간대 설정 (대안 방법)
설정 파일을 수정하지 않고 각 페이지 또는 세션마다 시간대를 직접 지정하는 방법도 있습니다.
mysql> SET time_zone = '+0:00'; Query OK, 0 rows affected (0.00 sec)
다만 이 방법은 매번 쿼리를 호출해야 하기 때문에 비효율적이며 좋은 방식이 아닙니다. 따라서 영구적으로 UTC를 적용하려면 my.cnf 파일에 timezone 옵션을 설정하는 첫 번째 방법을 사용하는 것이 권장됩니다.