本系列文章均为实际工作中遇到的场景,以此记录下来,共同进步,更愉悦的工作。
这次的sql语句可以优雅的基于某个时间格式来进行聚合,生成一系列的时间序列的值。
关键函数
- date_format()
- year()
- month()
- dayofmonth()
- ...
假设我们的表中有一个字段生产日期叫production_date是datetime格式的,现在需要按照天计算商品的总数,并且基于日期从小到大排序,语句如下:
SELECT DATE_FORMAT(`production_date`, '%Y/%m/%d 00:00:00') AS x, COUNT(*) AS y
FROM `production`
GROUP BY YEAR(`production_date`), MONTH(`production_date`), DAYOFMONTH(`production_date`)
ORDER BY x;
还有一个简单一些的方法是直接group by x
SELECT DATE_FORMAT(`production_date`, '%Y/%m/%d 00:00:00') AS x, COUNT(*) AS y
FROM `production`
GROUP BY x
ORDER BY x;
mysql日期函数用法链接
https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html