こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2007-11-02 17:49:57

QNo.3483364

困ってます

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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 などの関数を設定することはできない。 」

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/create-table.html

投稿日時 - 2007-11-03 08:41:38

あなたにオススメの質問