2013-01-23 3 views
3

DateTime 데이터 유형이 MySQL에있는 테이블 (예 : 2013-01-17 21:16:06), 이있는 반면, 엔터티에서 Date 필드에 대해 LocalDateTime 데이터 유형을 선택했습니다. 내 쿼리 중에 나는 datepicker를 사용하여 fromDate 및 toDate에만 2 개의 날짜를 기반으로 모든 레코드를 검색하려고합니다. 내가 date와 toDate 모두에 대해 같은 날짜를 선택하면, 시간은 00:00:00이므로 값이 같을 것이므로 데이터베이스에서 결과를 얻지 못한다는 것이 문제입니다.LocalDateTime에 대한 쿼리

Joda에서 올바른 데이터 유형을 사용했는지 궁금합니다. 두 값의 시간을 조정해야만 fromDate에 00:00:00, toDate에 23:59:59라고 말할 수 있습니까? 또는 더 나은 접근 방법은 무엇입니까?

SELECT * FROM `table` 
WHERE `datetime` >= @startDate 
AND `dateTime` < @endDate + INTERVAL 1 DAY 

:

+1

날짜> = fromDate 00:00 및 날짜

+0

은 toDate 다음에 정확히 하나의 새 LocalDateTime을 구성해야한다는 것을 의미합니다. 그게 다야 ? – abiieez

+0

예. 아니면 DATE_ADD 함수를 사용하거나 '/ * SELECT * /'2013-01-17 '+ INTERVAL 1 DAY'만 사용하여 특정 날짜에 하루를 추가하도록 MySQL에게 알릴 수 있습니다. –

답변

2

이 날짜 열 입력으로 두 개의 임의의 날짜를 감안할 때, 당신이 쓸 수 포함

  • 의 startDate가 시작 날짜입니다,
  • endDate가 종료 날짜입니다, 배타적

위의 의미는 다음의 캐스 ES :

  1. 은 startDate를가 2013-01-17해야 2013-01-17 (일일)에 대한 모든 기록을 확인하려면 및 종료 날짜 2013-01-17에 대한 모든 기록을 보려면 2013-01-17
  2. 해야한다 - 2013-01-18 (이일)의 startDate가 2013-01-17해야하며, 종료 날짜해야 2013-01-18.

이렇게하면 날짜를 직관적으로 선택할 수 있습니다. < 기호는 계산 된 종료일이 결과에서 제외되도록합니다 (예 : 첫 번째 경우 '2013-01-18 00:00:00 레코드가 생략됩니다).