2010-04-10 2 views
-1

Привет всем, мне нужна небольшая помощь в выяснении того, как получить диапазон дней для моего запроса. Вот код, я пытаюсь из:mySQL date range problem

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND theDateStart >= '2010-04-09' 
AND theDateEnd <= '2010-04-09'; 

Это то, что данные в таблице выглядит следующим образом:

TheDateStart = 2010-04-09 
TheDateEnd = 2010-04-11 

При тестировании этого кода выше, это ничего не заселяют. Если я выберу TheEndDate, он заполняет, но также и некоторые другие данные таблиц, которые он не должен делать (он должен получить только одну запись).

Я знаю, проблема в двух днях. Я не уверен, как получить диапазон дат для DateStart и theDateEnd, так как если кто-то попробует его, скажем, в 2010-04-10, он все равно должен знать его в ярости 2010-04-09 - 2010- 04-11. Но сейчас, это не так ...

Любая помощь будет замечательной! : О)

Дэвид

+0

, что происходит за IDNumber как '% 010203%', ваши даты столбцы строка или дата!? – lexu

ответ

0

Ok. я получил его: о) (YAY пойти со мной)

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = 'NB010203' 
AND '2010-04-09' BETWEEN theDateStart AND theDateEnd; 

Дэвид

0

Try После

select id, idNumber, theDateStart, theDateEnd 
from clients 
WHERE idNumber = '010203' 
AND date_format(theDateStart, '%Y-%m-%d')>= '2010-04-09' AND 
    date_format(theDateEnd, '%Y-%m-%d')<= '2010-04-09' 
+0

Пробовал это, но не выполнил его. – StealthRT

+0

Просто nit-picking: не конвертируйте столбец даты в строку, а вместо этого конвертируйте строку в дату. Есть только одна строка, есть (potentislly) много разных столбцов. одно преобразование вместо многих => усиление производительности. Кроме того, если вы преобразуете столбец даты, потенциальный индекс не может быть использован. – lexu

+0

А, записка взята: o) Спасибо, Lexu – StealthRT