結論
色々困るので使わない。
理由
以下に理由を述べる
SQL標準ではない
正論で殴った場合。
0000-00-00 00:00:00の仕様が難しい
0000-00-00 00:00:00
はMySQLの独自な仕様で NOT NULL制約のカラムではNULLと等価であり、NULLではない という仕様がある。
この仕様を知らないと意図しない結果を取得することになる。
ORMなどが対応してない
アプリケーションを作る時、ORMだったりDatetimeオブジェクトを操作することはよくあることだ。
しかし 0000-00-00 00:00:00
に対応していないことが多く、不正な値として扱われる。
DB移行で困る
なんらかの理由でMySQL以外のRDBMSに移行しようとした時、 0000-00-00 00:00:00
をサポートしていないことで値の修正が必要になる。
具体的な例だとMySQLからPostgreSQLにデータを移そうとした時にerrorでコケる。
AWS DMSもFDW for MySQLもそこを意図してないので自分で値を修正してやる必要がある。
なかなか異種間DB移行はないかもしれないけど、いざ必要となった時にめちゃくちゃ困る。
まとめ
せめてNULLだったり 0001-01-01 00:00:00 を使いましょう。
って7年前の俺に言いたい。