아래 처럼 날짜를 text box에 입력 받는다.
String으로 받아서
select * from 테이블 where dttm = '2013-02-15'
조회를 해보면 데이터가 원하는대로 나오지 않는다.
기본으로 '2013-02-15 00:00:00' 이렇게 들어있기 때문이다.
(2월15일의 딱 열두시 00분 00초 인 데이터를 찾는것)
그래서 전에는
dttm >= '2013-02-15 00:00:00' AND dttm <= '2013-02-15 23:59:59'
이렇게 썼었지만 이건 좋은 방법이 아니다..
좋은 방법은 아래를 볼 것 !
1. 컨트롤러
파라미터를 객체로 받음 -
객체 안에 있는 필드명과 넘어오는 파라미터의 key가 일치하면 알아서 객체로 들어온다는거
@Controller @RequestMapping("/test"); public void testMethod(Test test) { ... } } |
2. 도메인객체
스트링값을 DATE형으로 받는다
@Data public class Test { .... @DateTimeFormat(iso = ISO.DATE) private Date dttm = null; } |
날짜가 없으면 null로 초기화하고, String으로 넘어온 날짜를
@DateTimeFormat 어노테이션에 의해 DATE형으로 받아올 수 있다.
3. 쿼리
<select id="selectData" parameterType="Test" resultType="Test"> SELECT * FROM TEST WHERE <![CDATA[ DTTM >= #{dttm} AND DTTM <= DATE_ADD(#{dttm}, INTERVAL 1 DAY) ]]> </select> |
dttm에는 2013-02-15 00:00:00.0 (타임스템프) 값이 들어있다.
interval 1 day로 하루가 더해지면,
2013-02-15 00.00.00.0 ~ 2013-02-16 00.00.00.0 사이의 데이터가 보여지게 되는 것이다.
하루 : INTERVAL 1 DAY 달 : INTERVAL 1 MONTH 년 : INTERVAL 1 YEAR 시간 : INTERVAL 1 HOUR 분 : INTERVAL 1 MINUTE 초 : INTERVAL 1 SECOND 하루 전이면 INTERVAL -1 DAY 마이너스를 붙이면 된다 |
'개발 > Spring' 카테고리의 다른 글
RestTemplate의 HttpMessageConverter 에러 (0) | 2013.06.12 |
---|---|
Custom annotation 만들기 (Spirng AOP 이용) (0) | 2013.04.09 |
Java에서 CSV 파일 생성,다운로드. 한글 인코딩~ (4) | 2012.09.12 |
프로젝트의 모든 URI 가져오기 (0) | 2012.09.04 |
java에서 properties 파일 읽어 사용하기 (0) | 2012.08.29 |