MySQL запрос даты, между двумя полями даты - PullRequest
4 голосов
/ 01 февраля 2012

Я использую MySql 5.5.

Мне нужно найти идентификатор пользователя на дату с определенным IP-адресом.

Поля: userid, ipaddress, startdate, enddate.

Так, например, я ищудля идентификатора пользователя с IP-адресом 192.168.1.1 от 12 сентября 2011 года.

запрос будет аналогичным select * from database where ipaddress='192.168.1.1' and 2011-12-09 is in(startdate and enddate);

Любая помощь в указании этого логического недостатка приветствуется.Спасибо.

Ответы [ 3 ]

4 голосов
/ 01 февраля 2012

Не очень понятно, хотите ли вы:

'2011-12-09' BETWEEN startdate AND enddate

или:

'2011-12-09' = startdate AND '2011-12-09' = enddate
1 голос
/ 01 февраля 2012

очевидное решение будет выглядеть так:

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

но есть ярлык с использованием BETWEEN, поэтому вы можете просто написать:

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

примечание: BETWEEN также работает с числами, строками и другими вещами, и можно отрицать это, написав NOT BETWEEN - иногда весьма полезно.

0 голосов
/ 01 февраля 2012

Так как есть дата начала и окончания, может быть что-то вроде:

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