带时间戳的数据库,显示不同的月份

时间:2012-02-10 12:02:01

标签: php mysql timestamp distinct between

我有一张表,可以每15分钟保存一次上传/下载统计信息。

这就是表格的样子

| ID  | timestamp  | upload | download | packetssent | packetsreceived 
| 1   | 1328828401 | 343245 | 93473463 | 4343423     | 3435664
| 2   | 1328829301 | 343245 | 93473463 | 4343423     | 3435664

我想要的是当你在页面上第一次看到总下载/上传时。然后是可用月份列表。 (所以目前只有二月份),一旦你点击一个月,就会显示当天和他们的总数,当你点击一天时,你会看到那一天的所有记录

我需要建议如何做到这一点。

提前致谢

3 个答案:

答案 0 :(得分:2)

要提取各种值,请使用MySQL中的日期/时间函数

DAY(from_unixtime(timestamp))
MONTH(from_unixtime(timestamp))
YEAR(from_unixtime(timestamp))

HOUR(FROM_UNIXTIME(timestamp))
MINUTE(FROM_UNIXTIME(timestamp))
SECOND(FROM_UNIXTIME(timestamp))

您可以在group by部分中使用这些信息,根据各种时间范围提取信息

请查看:http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html获取完整列表

答案 1 :(得分:1)

尝试以下(当年):

SELECT 
   FROM_UNIXTIME(timestamp, "%m") AS m, 
   FROM_UNIXTIME(timestamp, "%Y") AS Y, 
   SUM(packetssent ) AS sent, 
   SUM(packetsreceived) AS received
FROM atable
GROUP BY Y, m HAVING Y=YEAR(NOW())

答案 2 :(得分:0)

我认为你可以使用

SELECT DISTINCT MONTH(DATE(timestamp)) FROM Table.

你可能会离开

SELECT DISTINCT MONTH(timestamp) FROM table.

但是如果你能为MONTH()函数的documentation声明你可以将时间戳传递给它。