现有数据字段为ordertime和coalproduction,ordertime的时间格式为yyyy-MM-dd HH:mm:ss,需要用sql查询出今天每个小时的coalproductiond的和和前一天每个小时的coalproduction的和 where除不适用between
时间: 2023-07-16 13:14:05 浏览: 79
可以使用以下 SQL 查询语句:
```
-- 今天每个小时的coalproduction的和
SELECT DATE_FORMAT(ordertime, '%Y-%m-%d %H:00:00') AS hour_time, SUM(coalproduction) AS today_sum
FROM your_table
WHERE ordertime >= CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d'), ' 00:00:00')
GROUP BY hour_time
UNION
-- 前一天每个小时的coalproduction的和
SELECT DATE_FORMAT(ordertime, '%Y-%m-%d %H:00:00') AS hour_time, SUM(coalproduction) AS yesterday_sum
FROM your_table
WHERE ordertime >= CONCAT(DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%Y-%m-%d'), ' 00:00:00')
AND ordertime < CONCAT(DATE_FORMAT(NOW(), '%Y-%m-%d'), ' 00:00:00')
GROUP BY hour_time;
```
这里使用了 `DATE_FORMAT` 函数来将 `ordertime` 转换为每个小时的时间格式,然后按照时间分组计算每个小时的 `coalproduction` 总和。为了分别查询今天和前一天的数据,分别使用了 `NOW()` 和 `DATE_SUB(NOW(), INTERVAL 1 DAY)` 函数来获取今天和昨天的日期,并使用 `CONCAT` 函数将日期和时间拼接成完整的时间格式。同时,为了避免使用 `BETWEEN` 运算符,使用了 `<` 和 `>=` 运算符来限定时间范围。最后,使用 `UNION` 运算符将今天和昨天的结果合并在一起。
阅读全文