1. ホーム
  2. mysql

MySQLは比較のため、先月から(now() - 1ヶ月)までのすべての行を選択します。

2023-10-10 18:26:36

質問

先月からの行を表示する MySQL クエリを書くのを手伝ってほしいのですが、1 か月全体ではなく、現在()と同じ日、時間、分まで、ただし 1 か月前までです。

例えば、今日が5/19の午後5時25分の場合、4/1の午前0時12分から4/19の午後5時25分までの行を選択する必要があります(もちろん同じ年からも)。

ありがとうございます。

どのように解決するのですか?

前月のlast_dayを計算し、1日足すことで、月の初めを得ることができます。不格好ですが、日付を文字列としてフォーマットし、それを計算に使用するよりは良いと思います。

select 
  *
from
  yourtable t
where
  /* Greater or equal to the start of last month */
  t.date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) and
  /* Smaller or equal than one month ago */
  t.date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)