最近30天的Mysql日期

Posted

技术标签:

【中文标题】最近30天的Mysql日期【英文标题】:Mysql dates of the last 30 days 【发布时间】:2021-06-08 18:03:21 【问题描述】:

我需要一些关于 mysql 日期的帮助

我有这个查询,它给我带来了过去 30 天内每条消息的相应日期的消息计数。

SELECT DATE_FORMAT(time, '%m/%d/%Y') AS Dates, count(*) as count 
FROM ma_messages 
WHERE time BETWEEN NOW() - INTERVAL 30 DAY AND NOW() 
AND usersid_send = 110 
Group by Dates 
ORDER BY Dates ASC

query image

但我还需要将过去 30 天的其他日期带入计数为 0 的值,例如,在查询中还带入 05/26/2021 日期和 05/25/ 之前的日期2021 年及 2021 年 5 月 28 日之后。

我不知道这是否可能,但我会感谢任何帮助。

谢谢。

【问题讨论】:

生成日期列表(日历)并将您的数据左连接到它。 您好,我有一张带日期的表格,但我是新来的,我不知道该怎么做 leftjoin 但还是谢谢您 我有一张带日期的表格 它包括所有日期?包括数据表中没有的日期? 是的,是一个包含一年中所有日期的表格 这能回答你的问题吗? MySQL how to fill missing dates in range? 【参考方案1】:

试试这个

SELECT 
DATE_FORMAT(time, '%m/%d/%Y') AS Dates, 
count(if(usersid_send='110',true,null)) as count 
FROM ma_messages 
WHERE time BETWEEN NOW() - INTERVAL 30 DAY AND NOW() 
Group by Dates 
ORDER BY Dates ASC

【讨论】:

好的,它给我带来了就像我说的 05/26/2021 日期和 06/07/2021 日期,但过去 30 天的其余日子没有带来,谢谢无论如何,也许我可以用这个做点什么【参考方案2】:

我有一张带日期的表格……一年中的所有日期——Alexis Murillo

SELECT d.`date`, COUNT(m.`time`) AS `count`
FROM dates_table d
LEFT JOIN ma_messages m ON d.`date` = DATE(m.`time`)
WHERE d.`date` BETWEEN NOW() - INTERVAL 30 DAY AND NOW() 
  AND m.usersid_send = 110 
GROUP BY d.`date`
ORDER BY d.`date` ASC

【讨论】:

它不会给我带来过去 30 天的其他日期,计数为 0,但至少它与日期表有左连接,无论如何我都很感激【参考方案3】:

使用您的表格“包含一年中的所有日期”

WITH
message_counts AS (  SELECT DATE_FORMAT("time", '%m/%d/%Y') AS "day", 
                            COUNT(*) AS "count" 
                       FROM ma_messages 
                      WHERE "time" BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
                            AND
                            usersid_send = 110 
                   GROUP BY Dates)                         
   SELECT all_dates."day", COALESCE(message_counts."count", 0)
     FROM all_dates
LEFT JOIN message_counts
          ON all_dates."day" = message_counts."day"
    WHERE all_dates."day" BETWEEN BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
 ORDER BY all_dates."day" ASC

【讨论】:

以上是关于最近30天的Mysql日期的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mongoid 和 Ruby 查询最近 30 天的日期范围?

mySql 查询当天本周最近7天本月最近30天的语句

如何使用 0 值的 MySQL 获得最近 30 天的结果?

mysql如何出查出最近7天,最近30天,最近n天的记录?

PHP+mysql 查询 今天,昨天,最近7天的数据?

获取按日期分组的最近 n 天的活跃用户数量