MySQLの取得現在+ N前のヶ月

最初Giedrius:

私は、結果の3ヶ月を返すクエリを持っています:

    SELECT *
    FROM table
    WHERE 
    DATE(created) >= DATE(NOW() - INTERVAL 3 MONTH)
    ORDER BY created

私は現在、これまでに3ヶ月を示したいと思います。今日は30/03/2020ですので、それが表示される必要があります。

- March 2020 (current month)
- February 2020 (-1 month)
- January 2020 (-2 months)
- December 2019 (-3 months)

どのように私は私のクエリは、MySQLでそれを達成変更することができますか?

GMB:

あなたは、次のフィルタを使用することができます。

created >= date_format(current_date, '%Y-%m-01') - interval 3 month

理論的根拠:

  • date_format(current_date, '%Y-%m-01') あなたの現在の月の初めを与えます

  • あなたは、検索期間の開始を取得することから3ヶ月をsubstractすることができます

これは、日付関数を必要とする条件を使用するよりも効率的になります。フィルタは、変換せずに、保存された日時に直接適用されることに注意してください。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=373539&siteId=1