2013-02-13 14 views
21

ho un datetime chiamato activity_dt ei dati si presenta così:gruppo DateTime per data e l'ora

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

Come faccio gruppo in base alla data e l'ora?

+1

che rdbms hai usato? –

risposta

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

Sto usando mysql. C'è qualche metodo per me per visualizzare la data? Es: 2/5/2013 – Yeo

+0

intendi formattare la data come il 2/5/2013? SELEZIONA DATE_FORMAT (activity_dt, '% e /% c /% Y') –

+0

Si dice errore di sintassi – 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

Utilizzando MySQL faccio di solito in questo modo:

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

o nella stessa idea, se avete bisogno di uscita data/ora:

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; 

Se si specifica un indice sul vostro colonna della data, MySQL dovrebbe essere in grado di usarlo per accelerare le cose un piccolo.

+0

Ho dovuto sostituire% h con% H, l'ordinamento con 0-24 funziona meglio per me invece di 0-12 e 0-12. – Melvin

+0

@Melvin Hai ragione, ho corretto la mia risposta. – Simon

+0

Solo una nota riguardante l'utilizzo dell'indice. Mentre date_format consente di utilizzare gli indici, gli indici saranno utilizzati in modo ottimale (scansione indice allentata) solo quando vengono utilizzate funzioni di aggregazione specifiche/limitate. Generalmente, solo MIN() e MAX() applicati a una singola colonna consentono scansioni di indici e anche altri aggregati purché specificino la parola chiave DISTINCT. Fonte: [collegamento] (http://dev.mysql.com/doc/refman/5.7/en/group-by-optimization.html) – JavoSN

Problemi correlati