检索特定月份的数据

Posted

技术标签:

【中文标题】检索特定月份的数据【英文标题】:Retrieve data for specific months 【发布时间】:2014-01-19 13:49:22 【问题描述】:

mysql 查询是这样的

SELECT MONTHNAME(access_date) as date,
       DATE_FORMAT( access_date,  '%m/%Y' ) as month_date ,
       COUNT( log_id ) as total_count 
       FROM user_activity_log
 WHERE dam_id = (
                  SELECT dam_id
                         FROM dam_content_details 
                    WHERE content_type= '$content_type'
                 ) 
        AND access_date >= last_day(NOW() - INTERVAL ($month) MONTH)
        GROUP BY MONTH( access_date ) 
        ORDER BY access_date ASC

我将传递 1,2,3.... 之类的数字,然后传递该月的给定值。

我面临的问题是它每 30 天、60 天检索一次数据。我想写 $month = '1;那么它应该从第 1 天开始返回当前月份数据和上个月数据。

我的示例输出 - $month = 2

date        month_date  total_count
---------  ------------ -----------
December    12/2013     4
January     01/2014     1

我想从 2013 年 12 月 1 日开始计算 12 月。 2013 年 12 月 1 日。知道如何解决吗?

【问题讨论】:

01/2013是什么意思?请解释.. 抱歉刚刚编辑了问题。请参考 @Clockwork-Muse 不,伙计,我无权分享抱歉。 @RIADev - 您不必为此使用实际数据 - 对于这些问题中的大多数,匿名/最小数据就可以了。哎呀,从我们可以看到此查询中引用的列中,它们中的数据本身就毫无意义。 【参考方案1】:

您只需从>= 中删除=

试试这个:

SELECT MONTHNAME(access_date) as date,
       DATE_FORMAT( access_date,  '%m/%Y' ) as month_date ,
       COUNT( log_id ) as total_count 
FROM user_activity_log
WHERE dam_id = (SELECT dam_id FROM dam_content_details WHERE content_type= '$content_type') AND 
      access_date > LAST_DAY(NOW() - INTERVAL (($month)+1) MONTH)
GROUP BY MONTH( access_date ) 
ORDER BY access_date ASC

【讨论】:

@RIADev 你遇到了什么问题?? 查看我是否会通过 1,然后在 30 天的间隔内选择当前日期到上个月。但我想要的是从 1 到当前日期的当前月份,以及上个月的整个 30/31 天。 没有相同的结果...可能是查询需要更改?

以上是关于检索特定月份的数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 start_end 和 end_date 检索特定月份的所有记录

在颤动的蜂巢中按日期检索数据

matlab中结构体中时间数据怎么提取

如何在特定月份的特定时间之间选择数据?

使用 PHP,如何检索与创建的月份和年份匹配的项目

如何在laravel中按特定月份获取用户订单数据?