|
■No92759 (WebSurfer さん) に返信 > ■No92750 (あい さん) に返信 > >>書き方がいけないのでしょうか? > > そうだと思います。date1 も DATE_FORMAT を使って変換して、それと比較して > みたらどうなりますか?
まず、最初の投稿を確認したところ文に間違いがございました。
DATE_FORMAT(date1,'%Y年%m月') ↓ DATE_FORMAT(DATE1,'%Y年%m月') AS date1 でした。
申し訳ございません。今後は修正した文で書かせていただきます。
<修正文> ※修正箇所 SELECT CASE WHEN DATE_FORMAT(CURDATE(),'%Y年%m月') > date1 THEN 0 @ WHEN DATE_FORMAT(CURDATE(),'%Y') + 1 = date1 THEN 1 A WHEN DATE_FORMAT(CURDATE(),'%m') + 1 = date2 THEN 2 B ※ ELSE 3 C END AS dateyear FROM Tbl1 DATE_FORMAT(DATE1,'%Y年%m月') AS date1 DATE_FORMAT(DATE1,'%m') AS date2 ※
上記のように修正致しました。 結果、Bの結果も出力されるようになったのですが
例えば2019年10月と比較すると2019年11月のデータだけが引っ掛かるはずなのですが、 2018年11月もBの結果になってしまいます。 本来ならば2018年11月は@の結果が出でほしいのですが…。
BをDATE_FORMAT(CURDATE(),'%Y年%m月')+1と直しても+1は年度に足されてしまうので 月の比較ができなくなってしまします。 月だけを+1にすることはできないのでしょうか?
|