2012-08-11 25 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