mysql查询两个日期字段之间的日期
我正在使用MySql 5.5。mysql查询两个日期字段之间的日期
我需要找到具有特定IP地址的日期的用户标识。
这些字段是用户标识,ipaddress,startdate,enddate。
因此,例如,我在寻找IP地址为192.168.1.1用户ID在09月12日2011年
查询将类似 select * from database where ipaddress='192.168.1.1' and 2011-12-09 is in(startdate and enddate);
任何帮助来指出这个逻辑漏洞是值得欢迎的。谢谢。
既然有开始和结束日期,可能沿着线的东西:
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;
格式化查询将使这更容易阅读,不得不水平滚动是烦人的;) – oezi 2012-02-01 14:59:58
显而易见的解决办法是这样的:
[...]
AND
startdate <= '2011-12-09'
AND
enddate >= '2011-12-09'
,但那里有一个快捷方式using BETWEEN
所以你可以简单地写:
[...]
AND
'2011-12-09' BETWEEN startdate AND enddate
注:BETWEEN
也适用于数字,字符串和其他的东西,有可能通过编写NOT BETWEEN
来否定它 - 有时非常有用。
谢谢你的提示,ypercube - 我这不是一个母语为英语的人,所以如果你懒得查找一个单词就会发生什么......但现在它是正确的。 – oezi 2012-02-01 15:06:49
'AND'2011-12-09'startdate AND enddate' – 2012-02-01 14:51:50