mysql에서 datetime 타입 좋은점 발견

배선영·2021년 9월 30일
0

내가 진행한 프로젝트나 다른 프로젝트에서 테이블을 생성할 때 날짜관련 컬럼에 데이터 타입을 VARCHAR()로 만드는 경우가 있다. 날짜 관련 쿼리라 해봤자 조회를 위해 BETWEEN을 사용해 특정 기간의 데이터를 조회하는게 다라 생각했기 때문에 별 생각 없었는데 오늘 그래도 datetime 타입의 장점을 발견한 거 같다.

지난번 mybatis resultType을 해시맵으로 하여 쿼리 결과가 JSON 타입의 데이터가 아닌 Object 타입의 쿼리가 되어 오류가 났던 적이 있다.
역으로 parameterType로 문자열과 자바의 Date타입을 넣었을 때 차이점이 궁금해서 넣어보았다.

컬럼 옵션이 datetime일 경우 자바의 Date타입의 데이터와 문자열 모두 잘 작동 되었다.
문자열 데이터는 주의할 것이 길이가 8자 이상 14자 이하여야 했다.
8자까지의 숫자는 년,월,일(yyyy-MM-dd) 그 뒤의 9-14자는 시, 분, 초로 datetime 타입의 데이터로 알아서 인식하여 쿼리를 처리했다.

자바 Date타입의 데이터를 넣어도 쿼리에는 아무 문제 없었다. mybatis 로그살펴봤는데 TIME = Mon Jan 25 13:21:31 KST 2021로 쿼리가 찍혀있었다.

컬럼의 타입이 datetime이면 개떡같이 넣어도 mysql이 찰떡같이 날짜 데이터로 인식한다는 것을 알게 되었다.

컬럼이 VARCHAR형식이어도 BETWEEN 연산에는 큰 문제가 없었는데 해당 날짜와 시간과 일치하는 데이터를 뽑아야 할때는 들어간 날짜의 포맷까지도 모두 같아야 했었다.

날짜 데이터 라는걸 알 수 있을정도의 형식만 지켜주면 mysql이 알아서 잘 처리해주기 때문에 datetime을 쓰는것이 편리하다고 생각했다.

0개의 댓글