- 締切済み
Mysql DATE型のDEFAULT値
初心者ですが、よろしくお願いします。 Mysqlでテーブルを作成して、カラムにDATE型を指定するとDEFAULT値が設定できません、、、。 これはMysqlの仕様なのでしょうか? ちなみに、TIMESTAMP型だと、'DEFAULT CURRENT_TIMESTAMP'でDEFAULT設定できます、、。 -- クエリ CREATE TABLE test ( column_name DATE NOT NULL DEFAULT CURRENT_DATE ); >> エラー ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CURRENT_DATE)' at line 1 Mysql::ABも調べたのですが、よく分かりませんでした。 よろしくお願いします。 MySQLバージョン 5.0.41
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- chukenkenkou
- ベストアンサー率43% (833/1926)
MySQLのマニュアルに、記載があります。 CURRENT_DATE等を、DEFAULTに設定することはできません。 TIMESTAMP型に関しては、MySQLが自動的に日時を設定する特別なデータ型なので、指定があってもsyntaxエラーにしていないのでしょう。 「DEFAULT 値は定数でなければならず、関数や式を使用することはできない。 DEFAULT 値が指定されていない場合、そのカラムには、次の方法で、MySQL によって DEFAULT 値が自動的に割り当てられる。 値として NULL を取れるカラムの場合、デフォルト値は NULL になる。 NOT NULL として宣言されているカラムの場合、デフォルト値はそれぞれのカラム型によって決まる。 AUTO_INCREMENT 属性を持つと宣言されていない数値型カラムの場合、デフォルトは 0。AUTO_INCREMENT カラムの場合、デフォルト値は連続値の次の値になる。 TIMESTAMP 型以外の日付と時刻型の場合、デフォルトはその型に対応するゼロ値。テーブル内の最初の TIMESTAMP 型カラムのデフォルト値は、現在の日時になる。 See 項6.2.2. 「日付と時刻型」。 ENUM 型以外の文字列型の場合、デフォルト値は空の文字列。ENUM の場合、デフォルト値は最初の列挙値になる。 デフォルト値は定数でなければならない。したがって、日付カラムのデフォルト値として、NOW() や CURRENT_DATE などの関数を設定することはできない。 」