2012-06-22 5 views
0

Я немного не уверен, как построить следующий запрос для базы данных MySQL.Как построить условный SQL-запрос

В моей таблице есть два поля int, startDate и endDate, которые имеют временные метки UNIX. endDate может быть NULL, что подразумевает отсутствие даты окончания.

Я хочу получить все записи, для которых текущая временная метка попадает в диапазон.

В случае, endDate имеет значение, я могу сделать:

SELECT * FROM table WHERE startDate < NOW() AND endDate > NOW()

и в том случае, если endDate является NULL, я могу сделать:

SELECT * FROM table WHERE STARTDATE < NOW()

Мой вопрос в том, как я могу объединить два вышеуказанных запроса в один, один условный запрос?

ответ

2

Easy:

SELECT * FROM table WHERE startDate < NOW() AND 
          (endDate IS NULL OR endDate > NOW()) 
+0

Ого .... это было действительно легко. Ха-ха, я переусердствовал. Благодарю. – xbonez

+0

Не уверены в '&&' и '||' - они работают кросс-платформенными? Я бы рекомендовал просто использовать 'AND' и' OR', imo. – halfer

+0

@ halfer: Хорошая точка. Изменено на 'AND' и' OR'. – Jon

3
SELECT * FROM table 
WHERE startDate < NOW() AND (endDate IS NULL OR endDate > NOW()) 
+0

Спасибо. Легче, чем я думал. – xbonez

Смежные вопросы