2012-02-04 27 views
2

我有一个MySQL数据库,看起来像这样:如何在mysql中按月,日和小时分组数据?

id | userid | timestamp | activity 

时间戳是datetime数据类型,我需要通过月,日,小时将数据分组。我为我的脚本使用mysql和php。

我能够通过月和日使用以下查询做到这一点:

$query = "SELECT COUNT(id) as totals FROM security_transactions WHERE YEAR(timestamp) = 2012 GROUP BY MONTH(timestamp), DAY(timestamp)"; 

我需要一个月一天时间去做。

请帮忙。

谢谢。

回答

1

您可以通过查询提供您的列添加, HOUR(TIME(timestamp))到你的小组是DATETIME格式的

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_hour

此外,从把在下面的意见的错误信息,它看起来像@Aprentice没有用mysql ,但是我已经为寻找mysql的其他人改进了这个答案。

我从来没有使用MSSQL,所以我不能对此进行测试,但下面可能是由最接近的小时工作组:

GROUP BY dateadd(hour, datediff(hour, 0, timestamp, 0) 
+0

我不知道这是如何设置工作,但是当我使用HOUR()函数我得到一个错误,就像函数不存在。 – 2012-02-04 15:42:14

+0

这是我使用小时()函数时得到的错误:警告:odbc_exec()[function.odbc -exec]:SQL错误:[Microsoft] [ODBC SQL Server驱动程序] [小时]'小时'不是一个可识别的函数名称,第SQ行SQLExecDirect中的SQL状态37000第8行D:\ SecurityServices \ temp \ moises \ Vail_Stats \ index.php – 2012-02-04 15:47:52

+1

您确定您使用的是MySQL而不是Microsoft SQL Server吗? – Marki555 2012-02-04 21:00:42

0

就拿这一步,使用HOUR()为好。您首先需要提取时间戳的时间部分。但猜猜看是什么,有一个函数,以及;)

+0

如何提取时间部分 – 2012-02-04 15:46:30

+0

警告:odbc_exec()[function.odbc -exec]:SQL错误:[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]'小时'不是可识别的函数名称。在第8行的D:\ SecurityServices \ temp \ moises \ Vail_Stats \ index.php中SQLExecDirect中的状态37000 – 2012-02-04 15:50:32

+0

根据你的问题,你正在使用MySQL。这是一个MS SQL Server错误... – 2012-02-05 10:24:46