Dandy Now!
  • [Node.js] MySQL 날짜, 시간이 왜 UTC 시간으로 조회될까?
    2024년 01월 29일 09시 53분 32초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    1. MySQL 날짜, 시간이 왜 UTC 시간으로 조회될까?

    MySQL Workbench에서 SELECT 쿼리로 날짜, 시간에 해당하는 데이터를 조회하니 [그림 1]과 같이 원하는 결과가 잘 나왔다.

    [그림 1] MySQL에서 날짜, 시간 정보로 조회

     

    하지만 내가 만든 서버에 동일한 쿼리를 적용한 API를 호출하면 [그림 2]와 같이 UTC 시간으로 조회가 되었다.

    [그림 2] Postman에서 API 호출 테스트 결과

     

    도대체 왜???

     

    2. 쿼리에 CONVERT_TZ() 적용해 해결

    위와 같은 현상이 발생하는 원인은 아직 찾지 못했다. 다만 쿼리에서 CONVERT_TZ()를 이용해 create_date 칼럼의 타임존을 UTC에서 Asia/Seoul로 변경해주어 이 문제를 해결했다. 

    SELECT CONVERT_TZ(create_date, 'UTC', 'Asia/Seoul') AS create_date // 타임존은 UTC에서 Asia/Seoul로 변경
    FROM traffic_hour
    WHERE DATE(create_date) = ? AND TIME(create_date) >= STR_TO_DATE(?, '%H:%i:%s')
    AND TIME(create_date) <= STR_TO_DATE(?, '%H:%i:%s') + INTERVAL 1 HOUR; // 날짜와 시간 정보를 각각 받고, 받은 시간 정보에서 부터 1시간을 더한 시간만큼의 데이터를 조회하는 쿼리이다.

     

    [그림 3] 타임존 변경후 원하는 결과가 조회되었다.

    728x90
    반응형
    댓글