2012-02-01 3 views
4

MySql 5.5를 사용하고 있습니다.두 날짜 필드 사이의 날짜에 대한 mysql 쿼리

특정 IP 주소가있는 날짜에 사용자 ID를 찾아야합니다.

필드는 userid, ipaddress, startdate, enddate입니다.

그래서 예를 들어 내가 쿼리가이 논리의 결함을 지적하는 select * from database where ipaddress='192.168.1.1' and 2011-12-09 is in(startdate and enddate);

어떤 도움 유사하다 9월 12일 2011 년

에 IP 주소 192.168.1.1을 가진 사용자 ID를 찾고 있어요 것은 환영합니다. 고맙습니다.

+2

'AND'2011-12-09 'startdate와 enddate 사이' –

답변

4

당신이 원하는 경우에 그것은 매우 분명하지 않다 :

'2011-12-09' BETWEEN startdate AND enddate 

또는 :

'2011-12-09' = startdate AND '2011-12-09' = enddate 
+0

'between'은 '<='/'> ='- 비교를 수행하므로 시작과 종료시에 '='를 사용하면 다음과 같은 결과를 얻을 수 없습니다. 모든 경우. – oezi

+0

죄송합니다, 나는 첫 번째 원한다 '2011-12-09'startdate와 enddate 사이 ' – notmyname

0

시작 및 종료 날짜의 라인을 따라 아마도 뭔가가 있기 때문에 :

SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' >= startdate AND '2001-12-09' <= enddate; 

또는 ypercube에서 지적한 바와 같이 BETWEEN :

을 사용할 수 있습니다.3210
SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' BETWEEN startdate AND enddate; 
+0

querys를 서식 화하면 가로로 스크롤해야하는 것이 훨씬 쉽습니다.) – oezi

1

확실한 해결책은 될 것 같은 :

[...] 
AND 
    startdate <= '2011-12-09' 
AND 
    enddate >= '2011-12-09' 

그러나 바로 가기 using BETWEEN 그래서 당신은 단순히 프로그래머 작성할 수 있습니다

[...] 
AND 
    '2011-12-09' BETWEEN startdate AND enddate 

참고 :BETWEEN 또한 숫자, 문자열 작동 및 다른 것들, 그리고 그것을 쓸어서 부정 할 수도 있습니다. NOT BETWEEN - 때로는 매우 유용합니다.

+0

힌트를 주셔서 감사합니다, ypercube - i 네가 영어를 모국어로 사용하는 사람이 아니기 때문에 만약 당신이 한 마디를보기에는 너무 게으른 사람이라면 일어나는 일이다. 그러나 이제는 맞다. – oezi