2016-08-12 5 views
0

모든 레코드가 같고 2014-08-31보다 작고 2014-08-01보다 커야합니다.이 쿼리를 사용하여 쿼리를 작성한 사람이 있습니까?MYSQL less 함수가 제대로 작동하지 않습니다.

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate <= '2014-08-31'; 

표 값

createdDate 
2014-08-01 05:14:52 
2014-08-27 05:15:08 
2014-08-29 02:54:06 
2014-08-30 05:57:12 
2014-08-31 07:56:13 

여기 내 출력 내가 2014년 8월 31일 7시 56분 13초이 값을 얻을 수

2014-08-01 05:14:52 
2014-08-27 05:15:08 
2014-08-29 02:54:06 
2014-08-30 05:57:12 

했다. 제발, 왜 이런 일이 일어나는 지 아십니까?

+0

당신은 문자열과 날짜가 같은 것이 아니다 깨닫게 하시죠? 이 모든 작업을 제대로 수행하려면 날짜를 사용해야합니다. 또한, '2014-08-31 07 : 56 : 13'은 실제로'2014-08-31 00 : 00 : 00 '이후입니다. 따라서 이보다 작거나 같으면 제대로 작동합니다 ... – ppeterka

+0

예. thanks @ppetereka – Darshan

답변

2

문제는 '2014-08-31''2014-08-31 00:00:00'

로 해석됩니다 가장 빠른 수정이 될 것입니다 : 이것은 9월 1일 전에 모두 나열 할

SELECT * FROM table where user_id = 322 and createdDate > '2014-08-01' and createdDate < '2014-09-01'; 

.

올바른 해결 방법은 문자열 대신 날짜를 사용하는 것입니다.

+0

또 다른 해결책이 있습니다. 나는 또한 캘린더를 사용하여 하나의 날짜를 추가 할 수 있습니다. = 2014-08-31 좋아요. 하루를 더하면 2014-09-31이되어야합니다. 이것은 또한 해결하는 데 도움이됩니다. – Darshan

2

이 해결해야 ..

SELECT * FROM table where user_id = 322 and 
createdDate >= str_to_date('08/01/2014 00:00:00','%m/%d/%Y %H:%i:%s') 
and createdDate <= ('08/31/2014 23:59:59','%m/%d/%Y %H:%i:%s'); 
관련 문제