2013-02-13 3 views
21

У меня есть DateTime под названием activity_dt и данные выглядит следующим образом:DateTime группа по дате и времени

2/5/2013 9:24:00 AM 
2/7/2013 7:17:00 AM 

Как я группа по дате и времени?

+1

Какие rdbms вы использовали? –

ответ

47

SQL Server:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY DATEPART(day, [activity_dt]), DATEPART(hour, [activity_dt]); 

Oracle:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY TO_CHAR(activity_dt, 'DD'), TO_CHAR(activity_dt, 'hh'); 

MySQL:

SELECT [activity_dt], count(*) 
FROM table1 
GROUP BY hour(activity_dt) , day(activity_dt) 
+1

Я использую mysql. Есть ли способ показать дату? Например: 2/5/2013 – Yeo

+0

Вы имеете в виду формат даты, как 5/5/2013? SELECT DATE_FORMAT (activity_dt, '% e /% c /% Y') –

+0

Он говорит о синтаксической ошибке – Yeo

1
SELECT [activity_dt], COUNT(*) as [Count] 
    FROM 
(SELECT dateadd(hh, datediff(hh, '20010101', [activity_dt]), '20010101') as [activity_dt] 
    FROM table) abc 
GROUP BY [activity_dt] 
7

Использование MySQL Я обычно делаю это таким образом:

SELECT count(id), ... 
FROM quote_data 
GROUP BY date_format(your_date_column, '%Y%m%d%H') 
order by your_date_column desc; 

Или в той же идее, если нужно вывести дату/час:

SELECT count(id) , date_format(your_date_column, '%Y-%m-%d %H') as my_date 
FROM your_table 
GROUP BY my_date 
order by your_date_column desc; 

Если указать индекс на вашей даты столбца, MySQL должен быть в состоянии использовать его, чтобы ускорить вещи немного.

+0

Мне пришлось заменить% h% H, сортировка с 0-24 работает лучше для меня, а не 0-12 и 0-12. – Melvin

+0

@Melvin Вы правы, я исправил свой ответ. – Simon

+0

Просто примечание относительно использования индекса. В то время как date_format позволяет использовать индексы, индексы будут использоваться только оптимально (сканирование с ослабленным индексом), когда используются конкретные/ограниченные агрегированные функции. Как правило, только MIN() и MAX(), применяемые к одному столбцу, допускают сканирование индексов, а также другие агрегаты, если они определяют ключевое слово DISTINCT. Источник: [ссылка] (http://dev.mysql.com/doc/refman/5.7/en/group-by-optimization.html) – JavoSN