내 세상

[MyBatis] Error - java.sql.SQLException: Illegal hour value '26' for java.sql.Time type in value '26:00:01 본문

Technical/Spring

[MyBatis] Error - java.sql.SQLException: Illegal hour value '26' for java.sql.Time type in value '26:00:01

sga8 2020. 8. 24. 18:51
728x90
반응형

아래의 SQL을 Mybatis에서 동작하면 error가 발생한다.

SELECT TIMEDIFF(start_time,end_time)) as timegap FROM test_log;

아래와 같은 error가 발생하게 된다.  java.sql.SQLException:

Error - java.sql.SQLException: Illegal hour value '26' for java.sql.Time type in value '26:00:01

 

해당 에러는 time 값을 연산했을 때, hh:mm:ss 를 기준으로 각 단위가 hh는 0~24, mm/ss은 00~60 이런식의 범위를 넘으면 발생함.

 

구글링을 한 결과 해결 방법은 연산된 Date/Time의 값을 String으로 변환하여 Type에 얽힌 error가 발생하지 않도록 하는 것임.

 

2가지 방법이 있음.

 

1. concat을 통해서 date를 강제로 string으로 만들어주는 방법

 

SELECT CONCAT('', TIMEDIFF(start_time,end_time))) as timegap FROM test_log;

 

2. cast를 통해서 date를 char로 만들어주는 방법

 

SELECT CAST(TIMEDIFF(start_time,end_time)) AS CHAR) as timegap FROM test_log;

 

참고사이트: https://stackoverflow.com/questions/38823072/illegal-hour-value-error-while-getting-difference-between-two-times-using-timedi

 

 

728x90
반응형