2013-03-14 20 views
0

我有一个数据库充满了数据,其中也有一个时间戳字段。我想要做的是统计按时间戳分组的字段中的记录数,但以四舍五入为单位。为昨天创建一个时间戳,并将该范围内的所有时间戳组成

我现在有一块如下面的代码,

$days_ago7a = date('Y-m-d', mktime(0, 0, 0, date("m") , date("d") - 7, date("Y"))); 
$result = mysql_query("SELECT * FROM all_count WHERE date='$days_ago7a'"); 
$num_rows37 = mysql_num_rows($result); 

我想要做同样的事情,只能更换一个时间戳的日期(这也是在数据库中),并把所有的时间标记,从在24小时内。

是可能的吗?

好吧,我已经改变了这个代码,但它不会返回任何结果?

$result = mysql_query("select date(timestamp), count(*) from all_count group by date( timestamp);") 
or die(mysql_error()); 
    while($row = mysql_fetch_array($result)) { 
    echo "$timestamp"; 
    } 
+0

首先,days_ago不会起作用 - 你不能只从date(“d”)中减去7,并期待有意义的结果。如果'''date(“d”)'''是2?试试这个例子(Feb 2): '''<?php $ date = new DateTime('2013-02-02'); (0,0,0,日期(“m”),日期(“d”,$ date-> getTimestamp()) - 7,日期(“Y”))) 。 “\ n”;''' – 2013-03-14 13:53:09

回答

2

要组一个时间戳的日期:

select date(timestampfield), count(*) from all_count group by date(timestampfield); 

要想从昨天计数:

select count(*) from all_count where date(timestampfield) = date_sub(curdate(), INTERVAL 1 day); 
+0

谢谢我添加了我使用的代码,但它不返回任何结果? – user1941709 2013-03-14 14:01:12

0

我想只有在日期(没有时间)使用时间戳更简单的方法范围是做这样的事情:

$date = '2012-05-20 11:25:12'; 
$date = strtotime($date); 
$begginingOfDay = date('Y', $date).'-'.date('m', $date).'-'.date('d', $date).' 00:00:00' 
$timestamp = strtotime($begginingOfDay); 

现在你有$timestamp包含当天开始的时间戳。然后,你可以用它走动,例如数。减去天:

//timestamp points to 2012-05-20 00:00:00 
$timestampWeekBefore = $timestamp - 7 * 24 * 60 * 60; //date - 7 days * 24 hours * 60 minutes * 60 seconds 

会给你2012-05-14 00:00:00。 处理完毕后,您可以拨打date以适当的格式放置在您的页面或查询中。

+1

谢谢,我应该说我正在试图获得一个滚动期,例如七天前,14天前和30天前。所以基准日期会一直改变 – user1941709 2013-03-14 14:00:22

0

MySQL date functions to the rescue!

TO_DAYS(日期) 给定一个日期date,返回一个天数(从0年的天数)。

mysql> SELECT TO_DAYS(950501); 
    -> 728779 
mysql> SELECT TO_DAYS('2007-10-07'); 
    -> 733321 

我想你可以计算出其余部分。