0

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

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)
4

2 回答 2

1

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

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

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

于 2012-10-16T07:03:39.080 回答
0

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

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) )
于 2012-10-16T05:54:17.050 回答