使用PHP解决最忙碌的一天

时间:2014-03-19 22:47:57

标签: php mysql date unix-timestamp

每次有人登录系统时,我都有一个带有unixtimestamp时间戳的表。我想解决最忙碌的一天。

我有点迷失在哪里开始,我相信你需要计算存储在数据库中的每一天的计数(或者在日志的开始和结束之间的某种字符串?)

logs

的数据库结构

示例:

user  | action         | timestamp
admin | User Logged In | 1395257767

用户是"用户名"

行动正在"用户已登录"

时间戳是在登录系统时给出的Unixtimestamp。

任何帮助都是一个很好的开始

SQLFiddle - http://sqlfiddle.com/#!2/66d4293

3 个答案:

答案 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 ))转换为日期时间,然后转换为日期。

顺便说一句,您可以考虑将日期存储为datetimetimestamp结构。存储为unix时间戳然后必须转换为可用日期并不理想。

http://sqlfiddle.com/#!2/a53d1/2

答案 2 :(得分:0)

要使用最忙碌的一天DAYOFWEEK

SELECT DAYOFWEEK(timestamp),COUNT(*) FROM logs GROUP BY DAYOFWEEK(timestamp)