2012-06-22 62 views
1

我在MySQL数据库中有行,每个行都有一个时间戳值。 (即1340296188)如何获取特定日期的所有时间戳? PHP

我正在尝试查找过去7天的所有条目。我知道该怎么做一个查询,找到所有在过去的7天,是这样的:

$lastweek = time() - 604800; 
$results = mysql_query("SELECT * FROM table WHERE timestamp > $lastweek"); 

不过,我需要能够得到每天seperately。我将如何做这个查询?我不知道如何从上面的结果中找出哪些是哪个具体日期。

回答

2

你几乎已经存在;您只需要解析$results中的时间戳字段。

一天是(60 * 60 * 24)秒,因此您可以将每行的时间戳字段除以86400,将其转换为整数,结果为该条目发生前的天数。

对于数据集中的每一行:

$daysAgo = int($row["timestamp"]/86400); 
4

我相信有更多的方法来做到这一点。这里有一个:

SELECT * 
FROM table 
WHERE timestamp > CURRENT_DATE - INTERVAL 1 WEEK 
GROUP BY DAY(timestamp) 
+0

我并不想查询所有一个星期的结果,我可以做到这一点。我试图在白天分开所有的结果。 – JROB

+0

“GROUP BY”应该照顾这一点。我未经测试的更新*应该*工作 –

0

您可以使用FROM_UNIXTIME函数将UNIX时间戳转换回日期时间;并且您可以使用DATE_FORMAT函数格式化此日期时间。

SELECT columns, i, need, DATE_FORMAT(FROM_UNIXTIME(timestamp), '%Y-%m-%d') AS `date` 
FROM table 
WHERE timestamp > 1339700400 

如果您希望将结果按日期添加GROUP BY条款:

GROUP BY `date`