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

これにより、1 か月あたりのレコード数のリストが得られます。あなたの 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 に答える