问题
I'm using MySql 5.5.
I need to find a userid on a date with a particular ip address.
The fields are userid, ipaddress, startdate, enddate.
So for instance I am looking for a userid with ip address 192.168.1.1 on Sep 12 2011.
the query would be similar 
select * from database where ipaddress='192.168.1.1' and 2011-12-09 is in(startdate and enddate);
Any help to pointing out this logic flaw is welcome. Thank you.
回答1:
It's not very clear if you want:
'2011-12-09' BETWEEN startdate AND enddate
or:
'2011-12-09' = startdate AND '2011-12-09' = enddate
    回答2:
the obvious solution would be like:
  [...]
AND
  startdate <= '2011-12-09'
AND
  enddate >= '2011-12-09'
but theres a shortcut using BETWEEN so you can simply write:
  [...]
AND
  '2011-12-09' BETWEEN startdate AND enddate
note: BETWEEN also works for numbers, strings and other stuff, and it's possible to negate it by writing NOT BETWEEN - quite useful sometimes.
回答3:
Since there is a start and end date, maybe something along the line of:
SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' >= startdate AND '2001-12-09' <= enddate;
Or as pointed out by ypercube you can use BETWEEN:
SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' BETWEEN startdate AND enddate;
    来源:https://stackoverflow.com/questions/9097890/mysql-query-of-a-date-between-two-date-fields