2012-02-04 3 views
2

У меня есть базы данных MySQL, который выглядит следующим образом:Как я могу группировать данные по месяцам, дням и часам в mysql?

id | userid | timestamp | activity 

Отметка является типом данных даты и времени, мне нужно, чтобы получить данные, сгруппированные по месяц, день и час. Я использую 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(), я получаю ошибку, например, функция не существует. –

+0

это ошибка, которую я получаю, когда использую функцию hour(): Warning: odbc_exec() [function.odbc-exec]: ошибка SQL: [Microsoft] [ODBC SQL Server Driver] [SQL Server] 'hour' is not признанное имя функции., состояние SQL 37000 в SQLExecDirect в D: \ SecurityServices \ temp \ moises \ Vail_Stats \ index.php в строке 8 –

+1

Вы уверены, что используете MySQL, а не Microsoft SQL Server? – Marki555

0

Просто это один шаг дальше и использовать HOUR(), а также. Сначала вам нужно извлечь временную часть метки времени. Но угадайте, что, есть функция для этого;)

+0

Как извлечь временную часть –

+0

Предупреждение: odbc_exec() [function.odbc-exec]: ошибка SQL: [Microsoft] [драйвер SQL Server ODBC] [SQL Server] «час» не является признанным именем функции., SQL состояние 37000 в SQLExecDirect в D: \ SecurityServices \ temp \ moises \ Vail_Stats \ index.php в строке 8 –

+0

По вашему вопросу вы используете MySQL. Это ошибка MS SQL Server ... –

Смежные вопросы