Trouble Shooting
Java DateTimeFormatter 저장 오류
소농배
2019. 5. 29. 18:44
2018-12-30 ~ 2018-12-31 의 데이터가 보이지 않는다는 문의가 다수 인입됨.
DB 를 확인해보니
2018-12-30 로 저장되어야 하는 데이터가 2019-12-30
2018-12-31 로 저장되어야 하는 데이터가 2019-21-31 로 저장되어 버려서 해당일의 통계 데이터가 노출되지 않았다.
날짜가 잘못 저장된 이유.
BEFORE
private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
AFTER
private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
DateTimeFormatter.ofPattern() 메서드를 이용해서 LocalDateTime → String 로 타입을 변경하였는데
이때 패턴을 "YYYYMMddHHmmss" 를 사용하게 되면 Week year 를 사용하게 되어 해당 주의 년도를 YYYY 로 사용하게 된다.
즉, 2018-12-30 이 있는 주의 년도는 2019 이므로 2019-12-30 으로 변환/저장 된것이다.
배포하여 더 이상 발생하는것은 막았지만 이미 저장되어있는 300만건에 대해서 데이터 보정이 필요했다.
배치를 생성하여 데이터 보정완료.
데이터 보정 코드 리뷰 당시에 로직을 최소화하라는 리뷰를 해주셨다!!!!!!!!!!
복잡한 로직이 또 다른 데이터 오류를 발생시킬 수 있으므로!