테스트 H2 DB DATEDIFF 메서드 안됨개발일지2024. 2. 7. 21:48
Table of Contents
문제
JPQL 쿼리에서 DATEDIFF 함수를 사용하였는데 테스트 과정 중에 오류가 발생했다.
expected "date-time field"; SQL statement:
서버에서는 Mysql을 이용하고 있고, 테스트는 H2 를 이용하고 있었다.
H2의 DATEDIFF는 MySQL과 달리 date-time 필드를 필요했고, DBMS마다 메서드 파라미터 값이 달라야한다는 사실이 아찔했다. 그래서 모든 DB가 동일하게 사용할 수 있는 방법을 찾고자 했다.
해결방법
- ALIAS 생성
- H2 의 기존 DATEDIFF를 제거하고, ALIAS로 만들어 테스트에만 적용하고자 하였으나 기존의 DATEDIFF를 제거 또는 변경할 수 없어 실패
- 다른 메서드 찾기
- DATEDIFF를 대체할만한 다른 메서드를 찾던도중 TIMESTAMPDIFF 메서드를 찾게 되었다.
- 두 DBMS 의 TIMESTAMPDIFF는 dateTime 또는 unit 값이 필요로 했기 때문에 동일하게 사용할 수 있었다.
<h2의 TIMESPAMPDIFF>
<MySQL의 TIMESPAMPDIFF>
이와 참고하면 좋을 듯한 블로그
'개발일지' 카테고리의 다른 글
미니프로젝트 회고 (0) | 2024.07.19 |
---|---|
BastionHost를 이용한 EC2 SSH 접속 (0) | 2024.04.07 |
[개발일지] 접속관련 FCM 메세지 전송 기준 개선 (0) | 2024.01.28 |
우분투 mysql 한글 깨짐 (0) | 2023.04.06 |
2022.11.23 (0) | 2022.11.24 |
@gani+ :: Gani_Dev :)
꾸준히 기록할 수 있는 사람이 되자 !