每次有人登录系统时,我都有一个带有unixtimestamp时间戳的表。我想解决最忙碌的一天。
我有点迷失在哪里开始,我相信你需要计算存储在数据库中的每一天的计数(或者在日志的开始和结束之间的某种字符串?)
logs
示例:
user | action | timestamp
admin | User Logged In | 1395257767
用户是"用户名"
行动正在"用户已登录"
时间戳是在登录系统时给出的Unixtimestamp。
任何帮助都是一个很好的开始
SQLFiddle - http://sqlfiddle.com/#!2/66d4293
答案 0 :(得分:2)
快速猜测你的要求:
select date(timestamp),count(*) from logs group by date(FROM_UNIXTIME(timestamp))
来自数据库的示例输出我在以下位置测试了查询:
+---------------+----------+
| date(timestamp) | count(*) |
+---------------+----------+
| 2013-12-13 | 4978 |
| 2013-12-14 | 5016 |
| 2013-12-15 | 4999 |
| 2013-12-16 | 5002 |
| 2013-12-17 | 4995 |
| 2013-12-18 | 5000 |
| 2013-12-19 | 5001 |
| 2013-12-20 | 5001 |
| 2013-12-21 | 5001 |
| 2013-12-22 | 4713 |
| 2013-12-30 | 4892 |
| 2013-12-31 | 5064 |
| 2014-01-01 | 5024 |
| 2014-01-02 | 5001 |
| 2014-01-03 | 5002 |
| 2014-01-04 | 5001 |
| 2014-01-05 | 4970 |
| 2014-01-06 | 4989 |
| 2014-01-07 | 4995 |
| 2014-01-08 | 5004 |
| 2014-01-09 | 2531 |
答案 1 :(得分:2)
尝试像thi。
SELECT COUNT(*) c, DATE(FROM_UNIXTIME( timestamp) ) day FROM log
GROUP BY day ORDER BY c DESC LIMIT 1;
DATE(FROM_UNIXTIME( timestamp ))
转换为日期时间,然后转换为日期。
顺便说一句,您可以考虑将日期存储为datetime
或timestamp
结构。存储为unix时间戳然后必须转换为可用日期并不理想。
答案 2 :(得分:0)
要使用最忙碌的一天DAYOFWEEK
SELECT DAYOFWEEK(timestamp),COUNT(*) FROM logs GROUP BY DAYOFWEEK(timestamp)