해결 과정

1. Django에서 오늘 날짜 가져올 때 시간대 적용

datetime.today() 대신 from django.utils import timezone, timezone.now().date() 사용

2. MySQL에서 시간대 데이터 설치

아래 Django ORM을 쓰면 MySQL의 CONVERT_TZ 함수를 호출한다.

Transaction.objects.filter(created_at__date__range=[’2022-07-06’, timezone.now().date()])

근데 MySQL에 직접 CONVERT_TZ를 실행하면 오류가 난다.

SELECT CONVERT_TZ(created_at, 'UTC', 'Asia/Seoul') from transaction;

Timezone 데이터가 MySQL 서버에 다운로드 되어 있지 않아 발생하는 문제이다. 따라서 이를 설치한다.

3. MySQL Server 재시작

참고 자료

Timezone 정리

MySQL

MySQL Timezone은 아래 명령어로 확인 가능하다.