Pregunta

Soy nuevo en SQL de fecha y hora.

Teniendo en cuenta que tengo registros en MySQL con fecha y hora de datos (como se ve a continuación), ¿cuál es la mejor manera de conseguir la hora más frecuente que ocurran o gama / plazo para estos registros para un usuario en particular (es decir john)?

ID      | Datetime            | User      | Activity
0    2010-03-29 13:15:56        john         visit
1    2010-03-29 13:13:14        ariel        visit
2    2010-03-29 13:09:13        john         visit
3    2010-03-29 13:07:21        john         visit
4    2010-02-23 12:21:03        john         visit
5    2010-02-23 12:01:03        john         visit
6    2010-02-23 11:01:03        john         visit
7    2010-02-23 02:01:03        john         visit

Con los datos anteriores, la hora frecuente para John hacer Visita sería 13 , mientras que el período sería quizás 12-13 .

El objetivo es encontrar el período / hora que el usuario hace una cierta actividad más.

Gracias de antemano por toda la ayuda!

¿Fue útil?

Solución

Puede depender de la base de datos que está utilizando, pero en MySQL:

SELECT COUNT(id) as count, HOUR(Datetime) as hour FROM table GROUP BY hour ORDER BY count DESC LIMIT 1

(ver http: // dev. mysql.com/doc/refman/5.5/en/date-and-time-functions.html )

Otros consejos

con Oracle se puede escribir algo como

select TO_CHAR(Datetime, 'HH24'), count(ID) from Table group by TO_CHAR(Datetime, 'HH24')

sobre otros RDBMS utilizan función equivalente a extracto horas parte desde el campo de fecha y hora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top