【问题标题】:Group by month with date time in sql在sql中按日期时间分组
【发布时间】:2021-03-11 16:07:49
【问题描述】:

晕,我想按月(月份开始日期)统计数据并分组,然后以日期时间显示,知道吗?

table_a

timestamp
2020-11-28 04:00:00
2020-11-28 05:00:00
2020-12-29 01:00:00
2020-12-29 02:00:00
2020-12-29 03:00:00

预期结果:

timestamp             count
2020-11-01 00:00:00     2
2020-12-01 00:00:00     3

我的查询是:

SELECT STR_TO_DATE(DATE_FORMAT(timestamp, '%Y-%m-dd HH'), '%Y-%m-dd HH'), count(*) as count
from table_a

但我的结果是:

timestamp    count
2020-11-00     2
2020-12-00     3

【问题讨论】:

  • 标记您正在使用的 DBMS。
  • 我正在使用 mysql 8 @stickybit
  • 您的查询没有GROUP BY 子句。它会产生一个错误(或者,如果服务器配置错误,另一个结果)不是你声称得到的结果。该月也没有第 0 天。您确定您发布了正确的查询和正确的结果吗?
  • 如何显示每个月的开始日期? @stickybit
  • 如果是你要的,那就是第一个。

标签: mysql sql date group-by mysql-8.0


【解决方案1】:

你可以使用:

select str_to_date(concat_ws('-', year(timestamp), month(timestamp), 1)) as yyyymm,
       count(*)
from table_a
group by yyyymm;

【讨论】:

  • 感谢您的回答,查询看起来也像我的查询!我已经解决了按月添加组(时间戳)的问题!你能支持我的问题吗?
【解决方案2】:

我通过添加 group by month(timestamp) 解决了这个问题,我忽略了记录,重要的是按月分组,这是我的完整查询:

SELECT timestamp, count(*) as count
from table_a 
group by month(timestamp)

然后输出显示:

timestamp             count
2020-11-01 04:00:00     2
2020-12-01 01:00:00     3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 2021-03-10
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多