2012-08-11 50 views
0

當前我檢查我的網站每天收到多少新成員;像這樣:自昨天起查詢帶有時間戳的數據

$daystart = strtotime("00:00:00"); 
$newusers = mysql_num_rows(mysql_query("SELECT * FROM users WHERE createtime>'$daystart' OR createtime='$daystart'")); 

createtimeint(11),時間存儲在Unix時間戳。

我的問題是,我怎樣才能使上述查詢從昨天? (前一天有多少個新會員)

我試過strotime('-1 day'),但那個效果不好。

回答

0

由於您使用的是Unix時間戳,因此您可以將00:00:00和23:59:59的時間戳用於一天,並獲取所有添加的內容。

$starttime = date('U', strtotime('Yesterday 00:00:00')); 
$endtime = date('U', strtotime('Yesterday 23:59:59')); 
$query = "SELECT * FROM users WHERE createtime >= $starttime AND createtime <= $endtime;"; 

您也可以使用BETWEEN語句的SQL,但有時不檢索的所有數據。

0

也許你可以使用DateTime

$yesterday = new DateTime("yesterday"); 
0
SELECT * from users WHERE DATE(FROM_UNIXTIME(createtime)) = DATE(DATE_ADD(Now(), INTERVAL '-1' DAY)) 

未經測試,但可能奏效。

+2

考慮到這一點,就像使用日期時間數據類型一樣方便,在使用它時仍然需要考慮效率。在昨天凌晨12點和今天凌晨12點得到unix時間戳會更有效率,並且選擇這兩個日期之間的所有內容,而不是進行2個日期轉換,所以如果你在連接和連接上執行數千行這樣你可能想要考慮另一種方式。如果你有一個小的查詢,這個方法應該沒問題。 – 2012-08-11 11:20:54

+0

您應該將其編輯爲您的答案,而不是將其作爲評論。 – vascowhite 2012-08-11 11:24:05