2013-12-14 29 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和方式,輸入該INSERT完成的日期和時間。這裏是代碼:

 Database column : timein 

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

基本上我想只能從昨天選擇和COUNT。我如何才能從昨天的SQL數據庫中選擇COUNT?

+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

您的查詢是沒有意義的。您正在進行uservisitors之間的交叉連接,然後僅對訪問者進行過濾。我懷疑你想要的東西,如:

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