본문 바로가기
Programming & Platform/SQL

MySQL 저장된 시간이 JavaScript에서 조회한 시간 다를 때 해결 방법

by 코드스니펫 2024. 1. 3.
반응형

MySQL 저장된 시간이 JavaScript에서 조회한 시간과 다를 때 해결 방법

 

sql logo

 

MySQL에 저장한 시간을 JavaScript에서 조회할 때 다르게 나타는 문제가 발생하였습니다. 이번 글에서는 MySQL에 저장된 시간과 JavaScript 시간대가 다른 이유와 해결 방법에 대해 소개하겠습니다.

 

 

MySQL시간 JavaScript에서도 맞추려면

 

 

문제 상황

MySQL 데이터에는 Fri Dec 29 2023 00:00:00 GMT+0900 (한국 표준시)와 같이 저장되어 있지만 JavaScript에서 이를 조회하면 2023-12-28T15:00:00.000Z와 같이 시간이 변경된다는 문제가 발생합니다. 이는 MySQL과 JavaScript 간의 시간대 차이 때문에 발생하는 문제입니다.

 

 

문제 해결 방법

이러한 시간대 차이 문제를 해결하기 위해서는 MySQL 데이터베이스에서 가져온 날짜 및 시간 데이터를 JavaScript에서 사용하는 시간대로 변환해주어야 합니다. 이를 위해 CONVERT_TZ 함수를 사용하여 MySQL에서 날짜와 시간을 조회할 때 시간대를 변환하는 방법을 알아보겠습니다.

 

 

1. MySQL에서 UTC로 저장된 날짜와 시간 가져오기

우선 MySQL 데이터베이스에서 UTC로 저장된 날짜와 시간을 가져옵니다. 

 

const tickets = await this.seatRepository
  .createQueryBuilder('seats')
  .select([
    'seats.id AS seat_id, seats.grade AS grade',
    'COALESCE((seats.seat_num - COALESCE(Ticket.seat_num, 0)), 0) AS seat_num',
    'seats.seat_price AS seat_price',
    'shows.show_date AS show_date',
    'shows.show_time AS show_time',
  ])
  .leftJoin('tickets', 'Ticket', 'seats.id = Ticket.seat_id AND Ticket.cancel_chk = false')
  .leftJoin('shows', 'shows', 'shows.id = seats.show_id') 
  .where('seats.show_id = :showId', { showId })
  .getRawMany();

 

 

2. CONVERT_TZ 함수를 사용하여 시간대 변환

CONVERT_TZ 함수를 사용하여 MySQL에서 데이터를 조회할 때, 시간대를 JavaScript에서 사용하는 시간대로 변환합니다.

 

const tickets = await this.seatRepository
  .createQueryBuilder('seats')
  .select([
    'seats.id AS seat_id, seats.grade AS grade',
    'COALESCE((seats.seat_num - COALESCE(Ticket.seat_num, 0)), 0) AS seat_num',
    'seats.seat_price AS seat_price',
    'CONVERT_TZ(shows.show_date, \'+00:00\', \'+09:00\') AS show_date',  // 시간대 변환
    'shows.show_time AS show_time',
  ])
  .leftJoin('tickets', 'Ticket', 'seats.id = Ticket.seat_id AND Ticket.cancel_chk = false')
  .leftJoin('shows', 'shows', 'shows.id = seats.show_id') 
  .where('seats.show_id = :showId', { showId })
  .getRawMany();

 

 

3. JavaScript에서의 활용

JavaScript에서 받아온 데이터는 이미 변환된 상태이므로 따로 조치할 필요가 없습니다.

 

 

이제 CONVERT_TZ 함수를 사용하여 MySQL에서 조회한 데이터의 시간대를 JavaScript에서 사용하는 시간대로 맞춤으로써, 시간차로 인한 문제를 해결할 수 있습니다. 이러한 방법을 통해 MySQL과 JavaScript 간의 시간대 차이로 인한 문제를 원활하게 해결할 수 있습니다.

 

▼ JavaScript의 다양한 기능들 ▼

 

 

JavaScript로 이미지 위에 마우스 커서를 손가락 모양으로 바꾸기

JavaScript로 이미지 위에 마우스 커서를 손가락 모양으로 바꾸기 웹 페이지를 디자인하다 보면 이미지 위에 마우스 커서를 손가락 모양으로 바꾸는 것이 사용자 경험을 향상시키는 중요한 요소

lemonlog.tistory.com

 

 

JavaScript Enter 누를 때 검색 기능 로직 - 활용 소스 코드 제공

JavaScript Enter 누를 때 검색 기능 로직 - 활용 소스 코드 제공 웹 애플리케이션을 개발하다보면, 사용자가 검색 필드에 검색어를 입력하고 Enter 키를 누르면 검색이 실행되도록 하는 것이 흔한 요

lemonlog.tistory.com