MySQL DateTime按日期和小时分组
在MySQL数据库中,DateTime是一种常见的数据类型,可以表示日期和时间。在某些场合下,我们需要按照DateTime字段中的日期和小时进行分组,本文将介绍如何使用MySQL语句实现此功能。
阅读更多:MySQL 教程
让我们看看我们的数据
让我们从以下表中查询一些数据:
| id | datetime | value |
|---|---|---|
| 1 | 2022-07-12 10:14:54 | 5 |
| 2 | 2022-07-12 11:22:31 | 3 |
| 3 | 2022-07-13 16:42:18 | 10 |
| 4 | 2022-07-13 18:24:57 | 20 |
| 5 | 2022-07-13 19:51:39 | 15 |
| 6 | 2022-07-14 09:31:25 | 8 |
| 7 | 2022-07-14 10:23:51 | 12 |
分组按日期
我们需要将数据按日期分组,由于DateTime字段中包含日期和时间,我们需要使用日期函数将DateTime字段中的时间去除。
要按照日期分组,我们需要使用DATE函数。该函数将DateTime参数作为输入,返回仅包含日期的字符串。下面是查询语句:
SELECT DATE(datetime) as date, SUM(value) as total
FROM table_name
GROUP BY DATE(datetime)
输出:
| date | total |
|---|---|
| 2022-07-12 | 8 |
| 2022-07-13 | 45 |
| 2022-07-14 | 20 |
按日期和小时分组
要按日期和小时分组,我们需要使用DATE_FORMAT函数。该函数接受DateTime和格式化字符串作为参数,返回一个带有指定格式的字符串。下面是查询语句:
SELECT DATE_FORMAT(datetime, '%Y-%m-%d %H:00:00') as date_hour, SUM(value) as total
FROM table_name
GROUP BY DATE_FORMAT(datetime, '%Y-%m-%d %H:00:00')
输出:
| date_hour | total |
|---|---|
| 2022-07-12 10:00:00 | 5 |
| 2022-07-12 11:00:00 | 3 |
| 2022-07-13 16:00:00 | 10 |
| 2022-07-13 18:00:00 | 20 |
| 2022-07-13 19:00:00 | 15 |
| 2022-07-14 09:00:00 | 8 |
| 2022-07-14 10:00:00 | 12 |
总结
在MySQL数据库中,DateTime是一种表示日期和时间的常见数据类型。如果需要按照日期、小时或日期和小时进行分组,我们可以使用DATE或DATE_FORMAT函数。使用这些函数可以轻松地将DateTime字段中的时间部分去除或格式化。
极客教程