devlog/TIL
[TIL] jooq 잘 모르겠다 🤔
bandal-gom
2020. 2. 14. 21:18
삽질 로그 | 2019-05-30
갑분 1 = 0 ?!
conditionStep = conditionStep.and(opo.ORDER_STATUS_TYPE.in(Lists.newArrayList(request.getOrderStatusTypes())));
이런 경우의 jooq에서는 conditionStep.and(~~~) 자체가 AND 1 = 0 로 변경되어 쿼리가 실행됨.
고로 전 후에 무수히 추가한 and 조건들이 먹지 않음.
🐸개구려
갑자기 미국날짜?
String 으로 받아온 평범한 날짜입력값이 미국식 포맷으로 바뀌는 매직.
conditionStep = conditionStep.and(opo.ORDER_YMDT.between(DateUtils.forceParse(request.getStartYmdt()),
DateUtils.forceParse(request.getEndYmdt())));
극히 평범하고 잘 동작할 것 같은 코드이다.
DateUtils.forceParse 는 **yyyy-MM-dd HH:mm:ss** 이 형태의 LocalDateTime을 반환해 준다. 반환된 값을 가지고 between 으로 뿅 하고 잘 될 것 같았지만..! 쿼리로 날아가는 값은 사실 이렇게 바뀌어서 실행된다.
AND od_order_product_option.order_ymdt BETWEEN
'04/04/2019 00:00:00.000' AND '06/04/2019 23:59:59.000'
다시 내가 원하는 포맷으로 실행하려면 이런식으로 수정했다.
conditionStep = conditionStep.and(opo.ORDER_YMDT.between(dateFormat(request.getStartYmdt()),
dateFormat(request.getEndYmdt())));
...
public static Field dateFormat(String field) {
return DSL.field("{0}", SQLDataType.LOCALDATETIME, DSL.inline(field));
}
반응형