Skip to content

[bug] 날짜 밀림 현상 발생 및 해결 내역 정리 #45

@sinascode

Description

@sinascode

문제 요약: 날짜 밀림 현상

그래프 시각화 시, 실제 데이터의 날짜보다 하루 전으로 출력되는 현상 발생

  • 예시:
    • 실제 입력일: 2025-06-01
    • 그래프 출력일: 2025-05-31

원인 분석

  • 원인 1) MySQL의 날짜 저장 방식 (UTC 기반)

  • MySQL은 내부적으로 UTC 기준으로 날짜를 저장함

  • 클라이언트(브라우저)에서 new Date(UTC)로 처리되면 KST 기준 전날로 인식됨

  • DATE(receipt_date)로 자르면 UTC 기준 날짜가 유지되어 한국 시간 기준에서 하루 밀림 발생

  • 원인 2) SQL 날짜 비교 범위

WHERE receipt_date <= '2025-06-03'

해결 방안

  • 해결 1) UTC → KST 변환 함수 도입
// UTC 날짜를 KST로 보정하는 함수
function toKSTDateOnly(dateStr) {
  const utc = new Date(dateStr);
  const kst = new Date(utc.getTime() + 9 * 60 * 60 * 1000); // +9시간
  return kst.toISOString().slice(0, 10); // 'YYYY-MM-DD'
}
  • 모든 날짜 출력 시 이 함수로 변환해 사용

  • 해결 2) SQL 날짜 범위 수정

WHERE receipt_date >= ? AND receipt_date < DATE_ADD(?, INTERVAL 1 DAY)
  • 종료일의 자정 직전까지 포함하도록 수정
  • 하루 전 데이터까지 포함되는 문제 해결

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions