4

我正在使用 MySql 5.5。

我需要在具有特定 IP 地址的日期找到用户 ID。

这些字段是用户 ID、IP 地址、开始日期、结束日期。

因此,例如,我正在寻找 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);

欢迎任何帮助指出这个逻辑缺陷。谢谢你。

4

3 回答 3

4

如果你想要,这不是很清楚:

'2011-12-09' BETWEEN startdate AND enddate

或者:

'2011-12-09' = startdate AND '2011-12-09' = enddate
于 2012-02-01T14:53:03.790 回答
1

显而易见的解决方案是:

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

但是有一个快捷方式使用BETWEEN,所以你可以简单地写:

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

注意: BETWEEN也适用于数字、字符串和其他东西,并且可以通过书写来否定它NOT BETWEEN- 有时非常有用。

于 2012-02-01T14:54:09.640 回答
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;
于 2012-02-01T14:53:25.753 回答