こんにちは、私はこのSQLを持っています
SELECT DATE_ADD( '2009-'+ MONTH( NOW() ) +'-01' , INTERVAL -1 MONTH );
私はそれを働かせることができません、私はここで何が間違っていますか?
助けを求める戦車。
SELECT CONCAT_WS('-', '2009', MONTH(NOW()), '01') - INTERVAL 1 MONTH
機能しないのは日付の連結です。文字列を数値に変換するため、2009+11+-1 = 2019 になり、日付への変換に失敗します。
文字列から日付を連結する代わりに、last_day 関数を使用して当月の最終日を取得し、1 日を加算して翌月の翌日を取得し、2 か月を減算してその月の初日を取得できます。前月:
select last_day(now()) + interval 1 day - interval 2 month;
Plus は算術演算子です。concat を使用する必要があります。
SELECT DATE_ADD( concat('2009-',MONTH(NOW()),'-01') , INTERVAL -1 MONTH )
またはそれ以上
select date(now()) - interval day(NOW())-1 day - interval 1 month;
(これは2010年にも機能します)