삽질 로그 | 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));
}
반응형
'devlog > TIL' 카테고리의 다른 글
뚝딱거리는 초보 devops의 TIL (0) | 2020.09.03 |
---|---|
유용한 linux command 모음 (사실 나를 위한 포스트 | 계속 추가 중) (0) | 2020.08.25 |
[TIL] Feign 404 (0) | 2020.02.14 |
[TIB] spock으로 테스트를 짜고 있는데 (0) | 2020.02.13 |
[TIL] ExecutorService / Event Driven Programming / Bulk Insert / DiscriminatorValue / AuditingEntityListener (0) | 2019.11.20 |