startTime = syncTime + "0000"
20230801 + "0000" → 202308010000endTime = requestTime + "5959"
20230801 + "5959" → 202308015959"0000"은 00시 00분
"5959"는 59시 59분
→ 59시는 존재하지 않으므로 오라클에서 ORA-01850 에러가 발생합니다.
오라클의 TO_DATE('YYYYMMDDHH24MISS', ...)
HH24: 0~23
MI: 0~59
SS: 0~59
시작: 000000 (00시 00분 00초)
종료: 235959 (23시 59분 59초)
String startTime = syncTime + "0000";
String endTime = requestTime + "5959";
requestTime 지정을 시간까지 넣으면 되긴 함
String startTime = syncTime + "000000"; // 00시 00분 00초
String endTime = requestTime + "235959"; // 23시 59분 59초
.append("EQ_REPAIR_START_DATE BETWEEN TO_DATE('")
.append(startTime)
.append("', 'YYYYMMDDHH24MISS') AND TO_DATE('")
.append(endTime)
.append("', 'YYYYMMDDHH24MISS')")
if (requestTime == null || requestTime.trim().isEmpty()) {
requestTime = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
log.info("requestTime 파라미터가 없어 기본값({})을 사용합니다.", requestTime);
}
String syncTime = BatchProperties.facilitiesPauseJobSynchronizedTime;
if (syncTime == null || syncTime.trim().isEmpty()) {
syncTime = requestTime;
log.info("facilitiesPauseJobSynchronizedTime이 없어 기본값({})을 사용합니다.", syncTime);
}
String startTime = syncTime + "000000";
String endTime = requestTime + "235959";
String query = "SELECT ... WHERE EQ_REPAIR_START_DATE BETWEEN TO_DATE('" + startTime + "', 'YYYYMMDDHH24MISS') AND TO_DATE('" + endTime + "', 'YYYYMMDDHH24MISS')";
5959는 잘못된 시간 값이므로 반드시 235959로 바꿔야 합니다.
오라클 날짜 포맷에 맞게 시작은 000000, 종료는 235959로 맞추세요.
쿼리 파라미터에 작은따옴표(')도 꼭 포함시키세요.
이렇게 수정하면 ORA-01850 에러 없이 정상적으로 배치가 동작합니다!