按时间间隔生成sql报告:小时

时间:2015-02-10 12:05:45

标签: mysql report date-format

我读了一篇关于按日/月/年的时间间隔生成报告的文章(http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

例如,使用这个sql我可以报告每月总销售额:

SELECT DATE(DATE_FORMAT(sales_time, '%Y-%m-01')) AS month_beginning,
       SUM(gross) AS total,
       COUNT(*) AS transactions
  FROM sales
 GROUP BY DATE(DATE_FORMAT(sales_time, '%Y-%m-01'))
 ORDER BY DATE(DATE_FORMAT(sales_time, '%Y-%m-01'))

但是我无法按小时创建一个sql-report ...

这不起作用...... :(

DATE_FORMAT(sales_time, '%Y-%m-%d %H:00:00') // not working...

如何创建按小时生成报告的查询?

1 个答案:

答案 0 :(得分:1)

如果你到处重复这个表达,它应该有用。但是,在MySQL中,您可以在group by(以及order by)中使用列别名,因此您可以这样做:

SELECT DATE_FORMAT(sales_time, '%Y-%m-%d %H:00:00') AS byhour,
       SUM(gross) AS total,
       COUNT(*) AS transactions
FROM sales
GROUP BY byhour
ORDER BY byhour;

表达式的问题很可能是date() - 它会从表达式中删除时间组件。