サチン:
私は、次のMySQLのクエリを使用して、最後の13ヶ月からレコードを取得するために取り組んでいます:
SELECT YEAR(`customer_date`),
MONTHNAME(`customer_date`),
COUNT(`customer_date`) AS Enquiries
FROM `crm_customers`
WHERE DATE(`customer_date`) BETWEEN CURRENT_DATE - INTERVAL 13 month AND
CURRENT_DATE
GROUP BY YEAR(`customer_date`),
MONTH(`customer_date`)
ORDER BY YEAR(`customer_date`) DESC,
MONTH(`customer_date`) DESC
私のプロトタイプMySQLのテーブルcrm_customersのルックスのように:
customer_id customer_date
1 2019-02-01 00:00:00
2 2019-02-02 00:00:00
... ...
... ...
... ...
出力:
けれども上記のクエリは正常に動作しないと私に、今日から13ヶ月の隙間から、昨年の非常に最後の月に関連する1つの問題を除いて、ほぼ正しい結果セットを提供します。
今日は私の上記のクエリで月2020日付条件の第七です
WHERE DATE(`customer_date`) BETWEEN CURRENT_DATE - INTERVAL 13 month AND CURRENT_DATE
2019年2月の7日から結果をフェッチ開始。
2月、2019年の月で、私は104個のエントリを持っています。24件のエントリが(2月1日と2019年2月6日の間)07 - 2月 - 2019年の前にあるので、しかし、私の上記のSQLは、わずか80のエントリをフェッチします。私も、これらのエントリが含まれるようにしたいです。どのように私は必要な結果を達成するために、私の日付条件を変更することができます。
syrkull:
あなたのWHERE句を次のように変更します。
WHERE DATE(`customer_date`) BETWEEN DATE_FORMAT(NOW() ,'%Y-%m-01') - INTERVAL 13 month AND DATE_FORMAT(NOW() ,'%Y-%m-01')