我有一个看起来像这样的数据库表:
| id | clock | info
----------------------------------------------
| 1 | 1262556754 | some info
| 2 | 1262556230 | some other info
| 3 | 1262556988 | and another
| 4 | 1262555678 | and some more
它包含日志记录和写入此日志时的 unix 时间戳。我需要的是获得每周报告,了解每周有多少日志记录。这是我写的一个查询:
SELECT
DATE_FORMAT(FROM_UNIXTIME(clock), "%U") AS week
count(*) as cnt
FROM logs
WHERE DATE_FORMAT(FROM_UNIXTIME(clock), "%Y") = '2010'
GROUP BY week
这给出了这样的结果:
| week | cnt
-------------------------------
| 1 | 55
| 2 | 134
| 4 | 765
| 20 | 65
伟大的!但我想看到的是像这样的日期范围08 Feb 2010 00:00 - 15 Feb 2010 00:00
,所以我的结果集将如下所示:
| day_start | day_end | cnt
---------------------------------------------------------
| 08 Feb 2010 00:00 | 15 Feb 2010 00:00 | 55
| 15 Feb 2010 00:00 | 22 Feb 2010 00:00 | 76
| 22 Feb 2010 00:00 | 01 Mar 2010 00:00 | 756
有什么办法可以做到这一点吗?
Use STR_TO_DATE('201008 Monday', '%X%V %W');
得到一个合适的日期,比如2010-02-22
然后使用DATE_FORMAT
以获得您需要的格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)