我有一个充满数据的数据库,它也有一个时间戳字段。我要做的是计算按时间戳分组的字段中的记录数,但舍入为几天。
我目前有一段代码如下,
$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 :(得分: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 );
答案 1 :(得分: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
以放置在您的页面或查询上。
答案 2 :(得分:0)
MySQL date functions to the rescue!
TO_DAYS(日期) 给定日期日期,返回日期编号(自0年以来的天数)。
mysql> SELECT TO_DAYS(950501); -> 728779 mysql> SELECT TO_DAYS('2007-10-07'); -> 733321
我认为你可以弄清楚其余部分。