日付計算のみを使用した簡略化されたバージョンは次のとおりです。
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
NOW()
の方法によって異なります 評価される(ステートメントごとに1回または2回)場合でも、これを関数でラップして、NOW()
の結果を保存することをお勧めします。 変数に変換し、その変数をLAST_DAY(var)
に使用します NOW()
の呼び出しの間に月がロールオーバーする競合状態を回避するために呼び出します。 。