4

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);

この論理上の欠陥を指摘するための助けは大歓迎です。ありがとうございました。

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 に答える