我正在使用MySql 5.5。
我需要在具有特定IP地址的日期找到用户ID。
字段是userid,ipaddress,startdate,enddate。
例如,我正在寻找2011年9月12日ip地址为192.168.1.1的用户ID。
查询类似
select * from database where ipaddress='192.168.1.1' and 2011-12-09 is in(startdate and enddate);
任何帮助指出这个逻辑缺陷都是值得欢迎的。谢谢。
答案 0 :(得分:4)
目前还不是很清楚:
'2011-12-09' BETWEEN startdate AND enddate
或:
'2011-12-09' = startdate AND '2011-12-09' = enddate
答案 1 :(得分:1)
显而易见的解决方案就像:
[...]
AND
startdate <= '2011-12-09'
AND
enddate >= '2011-12-09'
但是快捷方式using BETWEEN
所以你可以简单地写一下:
[...]
AND
'2011-12-09' BETWEEN startdate AND enddate
注意: BETWEEN
也适用于数字,字符串和其他内容,并且可以通过编写NOT BETWEEN
来否定它 - 有时非常有用。
答案 2 :(得分:0)
由于有一个开始和结束日期,可能是以下几行:
SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' >= startdate AND '2001-12-09' <= enddate;
或者如ypercube所指出,您可以使用BETWEEN
:
SELECT * FROM table WHERE ipaddress = '192.168.1.1' AND '2011-12-09' BETWEEN startdate AND enddate;