私は2つのクエリを持っています。これらのクエリにエラーはありません。結果だけが異なります。クエリひとつのなぜMysqlクエリを使用して異なる結果
クエリ1
SELECT * FROM notices
WHERE CURDATE() < end_date
OR end_date = NULL
ORDER BY id
結果:
クエリ2
select * from notices
where CURDATE() < end_date or end_date='0000-00-00'
order by id
クエリ二つの結果:
テーブル構造
質問
私の質問は、なぜ、クエリ1ではないということですクエリ2と同じ結果を示していますか?
、 '0000-00-00'に等しい。 –
しかし、私が挿入するとき、私は 'NULL'を使用して終了日に' 0000-00-00'を保存します。だから私は選択中になぜそれが 'NULL'と一緒に働いていないと言っています –
end_dateカラムの定義に' NOT NULL DEFAULT '0000-00-00''が含まれているように聞こえています。つまり、行がデータベースに挿入されたときに 'end_date'が指定されていないと、 '0000-00-00'が代わりに使用されます。質問をテーブルスキーマで更新してください –