【问题标题】:Fetch mysql data from start till current month从开始到当月获取mysql数据
【发布时间】:2012-10-16 15:03:39
【问题描述】:

我有一个mysql表tbl_track有很多记录

User_id  |  User_country  |  Datecreated (timestamp)
1        |3               |  2012-09-09 09:37:03
2        |7               |  2012-10-09 16:22:36

现在我想要这样的结果(从开始月份到当前月份)

September | September & October
1 record  | 2 records

我试试这个,但结果是相反的,从当月到月初,即(10 月、10 月+9 月、10 月+9 月+8 月)。我还为每个

编写了单独的查询

我当前月份的查询是

SELECT * FROM tbl_track 
  WHERE YEAR(`date_created`) = YEAR(CURRENT_DATE) 
  AND MONTH(`date_created`) = MONTH(CURRENT_DATE)

我对当前和上个月的查询是

SELECT * as count FROM tbl_track 
 WHERE YEAR(`date_created`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
 AND MONTH(`date_created`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    据我所知,在查询中没有简单的方法可以做到这一点。但是,您可以使用以下内容:

    SELECT COUNT(1), MONTH(date_created) AS mm, YEAR(date_created) AS yy
    FROM tbl_track
    GROUP BY mm, yy
    

    这会为您提供每月记录数的列表。根据您的 phpmyadmin 标签,我假设您将在 PHP 脚本中使用结果集,所以也许您可以在该脚本中累积前几个月的金额?

    【讨论】:

      【解决方案2】:

      您对当前和上个月的查询只是提取上个月的记录

      SELECT * as count FROM tbl_track 
      WHERE YEAR(`date_created`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
       AND MONTH(`date_created`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
      

      我觉得你应该改成

      SELECT count(*) as countofrec FROM tbl_track 
       WHERE YEAR(`date_created`) = YEAR(CURRENT_DATE - INTERVAL 1 MONTH)
       AND ( MONTH(`date_created`) = MONTH(CURRENT_DATE - INTERVAL 1 MONTH)
              OR
             MONTH(`date_created`) = MONTH(CURRENT_DATE) )
      

      【讨论】:

      • 你可以,但你能回答我的问题吗?
      猜你喜欢
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多