반응형
1. 발단
기간별 검색 구현
2. 상황
between A and B 까지 하면 A~B까지 출력하겠지 라고 낙관적인 생각
3. 실패원인
- A~B까리이지만, A가 포함인지 미포함인지, B가 포함인지 미포함인지 고려 안함
- 동료분이 23:59:59까지 조건으로 하면 될거같은데요~ 를 너무 쿨하게 참조만 함 (...)
- 쉬운 작업이라 생각하고 테스트 케이스를 너무 빈약하게 잡았음 (당일만 검색 고려 안함 + 산출값 확인 미흡)
3. 힌트
30일전부터 오늘까지의 데이터를 뽑아올 때,
between A and B and NOW() 를 사용했었음.
4. 처리
DATE_FORMAT(CREATE_DT, '%Y-%m-%d') <![CDATA[>=]]> #{startDt} AND DATE_FORMAT(CREATE_DT, '%Y-%m-%d') <![CDATA[<=]]> #{endDt}
DB에서 이짓까지 해가면서 출력할뻔 했다가...
DB연산은 최소화해야된단 생각에 정신줄 부여잡고 서버단에서 처리시도
날자 조건은 선택적 조건이므로,
startDt, endDt가 값이 있는지 확인 후, startDt + 00:00:00, endDt + 23:59:59 붙여서 쿼리 조건으로 입력
23:59:59~00:00:00의 데이터 유실 걱정 안해도 되는데, 어차피 db상 sencond까지 기록되므로 아무 문제 없음
5. 결과
정상적으로 시작날자의 00:00:00부터, 원하는 날의 23:59:59 데이터까지 정상적으로 출력
6. 느낀점
- 귀찮고 번거롭다고 테스트를 경시한다면 큰 사고가 터진다... 제발 조심하자
- 동료한테 물어봤으면 말좀 들어라!!!!!
반응형
'Debug Log > 삽질기' 카테고리의 다른 글
[짧]WSL 에러( Error: 0x80040326 Error code: Wsl/Service/0x80040326) (1) | 2023.03.31 |
---|---|
AWS) EC2 SSH 접속시 Permissions 0644 for '~.pem' are too open. (0) | 2022.12.11 |
Spring boot) 빌드 실패 오류 (org.gradle.plugin.api-version ...) (2) | 2022.12.11 |
mybatis) int 자료타입 if test 무조건 안타던 문제 (0) | 2022.08.25 |
mysql)전화번호 masking 작업 (0) | 2022.08.21 |