現在phpmyadminを使用しており、データが挿入されたときに現在の日付をスタンプするフィールドを設定しようとしています。
DATETIME
タイプに設定してみましたが、時間も含まれています。日付が欲しいだけです。DATETIME
また、デフォルト値をに設定しGETDATE()
て保存しようとしましたが、エラーが発生しました。
#1067 - Invalid default value for 'upload_date'
誰かがこれを行う方法を知っていますか?
現在phpmyadminを使用しており、データが挿入されたときに現在の日付をスタンプするフィールドを設定しようとしています。
DATETIME
タイプに設定してみましたが、時間も含まれています。日付が欲しいだけです。DATETIME
また、デフォルト値をに設定しGETDATE()
て保存しようとしましたが、エラーが発生しました。
#1067 - Invalid default value for 'upload_date'
誰かがこれを行う方法を知っていますか?
残念ながら、値を関数に設定することはできませんDEFAULT
。定数値である必要があります。1つの例外はですが、次の部分CURRENT_TIMESTAMP
も含まれます。time
column_name TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ただし、を使用しTRIGGER
て列のデフォルト値を設定できます。例えば:
CREATE TRIGGER trigger_name BEFORE INSERT ON your_table
FOR EACH ROW SET NEW.date_column = DATE(NOW());
また、を使用しての部分DATE()
を切り捨てます。TIME
NOW()
よくあるエラーです。ドキュメントをあなたに投げますhttp://dev.mysql.com/doc/refman/5.0/en/data-type-defaults.html
データ型指定のDEFAULTvalue句は、列のデフォルト値を示します。1つの例外を除いて、デフォルト値は定数でなければなりません。関数や式にすることはできません。これは、たとえば、日付列のデフォルトをNOW()やCURRENT_DATEなどの関数の値に設定できないことを意味します。例外は、TIMESTAMP列のデフォルトとしてCURRENT_TIMESTAMPを指定できることです。11.1.5.5項「TIMESTAMPの自動初期化と更新」を参照してください。
また、ドキュメントにはcurrent_timestampを使用する例外があります。これには、列がTIMESTAMP列である必要があります。