我有一个看起来像这样的数据库表:
| 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,所以我的结果集如下所示:
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
有什么办法吗?
使用STR_TO_DATE('201008 Monday', '%X%V %W');以获得合适的日期一样2010-02-22,然后用DATE_FORMAT得到你需要的格式。
STR_TO_DATE('201008 Monday', '%X%V %W');
2010-02-22
DATE_FORMAT