반응형

Spring 환경에서 mybatis로 postgresql 연동하여 사용하는 환경.


수정 전 쿼리

 <select id="selectCount" parameterType="com.export.model.DataDto" resultType="Integer">
        SELECT COUNT(*)
        FROM ${tableName}
        WHERE ${dataTimeColumn} BETWEEN #{startTime} AND #{endTime}
</select>

where 절에 시간으로 조건을 줬는데... 에러가 났다.

Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: timestamp without time zone >= character varying

dataTimeColumn 컬럼은 timestamp 타입이라...

timestamp without time zone 타입이랑 character 타입이랑 연산이 안 된다는 것 같다.

 

 

해결방법 : TO_TIMESTAMP(문자열,'YYYY-MM-DD') 를 사용하여 문자열을 Date형식으로 변환해준다.

 

수정 후 쿼리

<select id="selectCount" parameterType="com.export.model.DataDto" resultType="Integer">
        SELECT COUNT(*)
        FROM ${tableName}
        WHERE ${dataTimeColumn} BETWEEN TO_TIMESTAMP(#{startTime},'YYYY-MM-DD') AND TO_TIMESTAMP(#{endTime},'YYYY-MM-DD')
</select>
반응형

+ Recent posts