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";
  }
4

3 回答 3

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 );
于 2013-03-14T13:45:20.123 回答
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以适当的格式调用以放入您的页面或查询。

于 2013-03-14T13:56:42.833 回答
0

MySQL日期函数来救援!

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

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

我想你可以弄清楚其余的。

于 2013-03-14T14:02:42.877 回答