2013-12-14 2 views
0

Как я могу выбрать свою базу данных sql только вчера? Вот мой код:Выберите sql из базы данных только со вчерашнего дня

 SELECT *, COUNT(visitors.usr_id) as usr_count FROM user, visitors WHERE visitors.usr_id = $usr_id GROUP BY $usr_id ORDER BY usr_count LIMIT 1 

Мое имя базы данных timein и способ его вводит дату и время, когда ВСТАВИТЬ было сделано. Вот код:

 Database column : timein 

     Database insert looks like : 2012-9-6 9:11:35 

В основном я хочу, чтобы иметь возможность выбрать и COUNT только вчера. Как я могу выбрать SELECT COUNT из моей базы данных sql только вчера?

+1

я удалил Тег SQL Server, потому что синтаксис - это MySQL. –

+0

Видя строки, подобные '$ usr_id' в вашем запросе, очень волнует. Вы уверены, что вы [надлежащим образом избежали] (http://bobby-tables.com/php) этих значений, чтобы избежать [ошибок SQL-инъекций] (http://bobby-tables.com/)? – tadman

ответ

0

Попробуйте это один добавить условие вчера как timein <= NOW() - INTERVAL 1 DAY , timein >= NOW() - INTERVAL 2 DAY;

SELECT *, COUNT(visitors.usr_id) as usr_count 
FROM user, visitors 
WHERE visitors.usr_id = $usr_id 
AND timein <= NOW() - INTERVAL 1 DAY 
AND timein >= NOW() - INTERVAL 2 DAY 
GROUP BY $usr_id 
ORDER BY usr_count 
LIMIT 1 

Или вы можете использовать BETWEEN

SELECT *, COUNT(visitors.usr_id) as usr_count 
FROM user, visitors 
WHERE visitors.usr_id = $usr_id 
AND timein BETWEEN NOW() - INTERVAL 1 DAY AND NOW() - INTERVAL 2 DAY; 
GROUP BY $usr_id 
ORDER BY usr_count 
LIMIT 1 
1

Ваш запрос не имеет смысла. Вы делаете перекрестное соединение между user и visitors, а затем фильтруете только посетителей. Я подозреваю, что вы хотите что-то вроде:

SELECT *, COUNT(visitors.usr_id) as usr_count 
FROM user join 
    visitors 
    on visitors.usr_id = user.usr_id 
WHERE user.usr_id = $usr_id 
GROUP BY $usr_id 
ORDER BY usr_count 
LIMIT 1; 

Предложение where получить вчерашние данные будут:

WHERE date(timein) = date(NOW() - INTERVAL 1 DAY) 

Или, если у вас есть индекс по timein:

WHERE timein >= date(NOW() - INTERVAL 1 DAY) and timein < date(NOW()) 
+0

Да, это не сработает .... – user3102920

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