我是SQL Datetime的新手。
考虑到我在MySQL中有日期时间数据的记录(如下所示), 为特定用户(即john)获取这些记录最常出现的HOUR或范围/周期的最佳方法是什么?
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
根据以上数据, john 进行访问的频繁时间是 13 ,而期间可能是12-13 。
目标是找到用户最常从事某项活动的时间段。
提前感谢所有帮助!
答案 0 :(得分:0)
它可能取决于您正在使用的数据库,但在mysql中:
SELECT COUNT(id) as count, HOUR(Datetime) as hour FROM table GROUP BY hour ORDER BY count DESC LIMIT 1
(见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)
答案 1 :(得分:0)
使用oracle,您可以编写类似
的内容select TO_CHAR(Datetime, 'HH24'), count(ID) from Table group by TO_CHAR(Datetime, 'HH24')
在其他RDBMS上使用等效函数从Datetime字段中提取小时部分。