CURRENT_DATE/CURDATE() のデフォルトの日付値の問題
MySQL の世界では、一見単純な疑問に遭遇するかもしれません。 t CURRENT_DATE または CURDATE() は DATE のデフォルト値として機能します列?
謎: なぜ機能しないのか?
ご想像のとおり、このコードは問題なく動作するはずです:
CREATE TABLE INVOICE( INVOICEDATE DATE NOT NULL DEFAULT CURRENT_DATE )
しかし、驚いたことに、そうではありません。この難問の背後にある理由は何ですか?
答え: MySQL の制限
答えは MySQL 内の制限にあります。直感的ではありますが、DATE カラムのデフォルト値を CURRENT_DATE または CURDATE() に設定することはサポートされていません。
MySQL ドキュメントによると、デフォルト値は関数や式ではなく定数である必要があります。これにより、これらの関数を使用してデフォルトの日付を動的に設定する可能性がなくなります。
例外: CURRENT_TIMESTAMP
このルールの例外は CURRENT_TIMESTAMP です。この関数は、TIMESTAMP 列のデフォルト値として設定できます。ただし、これは特定の日付ではなく、現時点を表すことに注意することが重要です。
UPDATE: MySQL 8.0.13 では、大幅な変更が行われました。 CURRENT_DATE および CURDATE() が DATE 列のデフォルト値としてサポートされるようになりました。このアップデートは、この記事で説明した制限に対処します。
以上がCURRENT_DATE/CURDATE() が MySQL DATE カラムのデフォルト値として機能しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。