MySQL에서 현재 시간 조회 후 GMT 0(UTC)으로 변환하기
MySQL에서 now() 함수는 현재 세션에 설정된 시간대(time zone)를 기준으로 현재 날짜와 시간을 반환합니다. 만약 이 값을 GMT 0, 즉 UTC 기준 시간으로 변환하고 싶다면 utc_timestamp() 함수를 사용하면 됩니다.
1. now()로 현재 시간 확인하기
먼저 now() 함수를 사용해 현재 시간을 확인해 보겠습니다. 다음은 해당 쿼리입니다.
mysql> select now();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+---------------------+
| now() |
+---------------------+
| 2019-04-11 17:50:05 |
+---------------------+
1 row in set (0.00 sec)
출력 결과를 보면 현재 시간이 17:50:05로 표시되고 있습니다. 이 값은 서버에 설정된 현지 시간대를 기준으로 한 것입니다.
2. utc_timestamp()로 GMT 0(UTC) 시간 얻기
GMT 0, 즉 UTC 기준의 현재 시간을 가져오려면 utc_timestamp() 함수를 사용합니다. 쿼리는 다음과 같습니다.
mysql> SELECT utc_timestamp();
실행 결과는 다음과 같습니다.
+---------------------+
| utc_timestamp() |
+---------------------+
| 2019-04-11 12:20:08 |
+---------------------+
1 row in set (0.00 sec)
utc_timestamp()는 현재 UTC 날짜와 시간을 'YYYY-MM-DD HH:MM:SS' 문자열 또는 YYYYMMDDHHMMSS 숫자 형식으로 반환합니다. 위 예시에서는 UTC 기준 12:20:08로 표시된 것을 확인할 수 있습니다.
참고: CONVERT_TZ() 함수 활용하기
특정 시간대 간의 변환이 필요하다면 CONVERT_TZ() 함수를 사용할 수도 있습니다. 예를 들어 한국 표준시(KST, UTC+9) 기준의 현재 시간을 GMT 0으로 변환하려면 다음과 같이 작성합니다.
mysql> SELECT CONVERT_TZ(NOW(), '+09:00', '+00:00');
이처럼 utc_timestamp()는 항상 UTC 기준 시간을 반환하고, CONVERT_TZ()는 원하는 시간대끼리 자유롭게 변환할 수 있다는 점에서 차이가 있습니다. 상황에 맞는 함수를 선택해 사용하면 됩니다.