2013-12-11 11 views
9

mysqlを使用して、dateカラムとtimeカラムからタイムスタンプカラムを作成しようとしています。 dateまたはtimeカラムにNULL値が含まれている場合、mysqlは自動的にtimestampカラムの対応する値をcurrent_timestampに設定します。現在のタイムスタンプではなくNULLをデフォルトにする方法はありますか?mysqlタイムスタンプをデフォルトのnullに設定する、current_timestampを設定しない

ような何か:

ALTER TABLE customers ADD s_timestamp TIMESTAMP; 
UPDATE customers 
SET s_timestamp = timestamp(s_date,s_time) DEFAULT NULL; 

答えて

23

は、

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL; 

あなたの列を追加するには、このクエリを使用して、に更新時のみ:

ALTER TABLE `customers` 
ADD COLUMN `s_timestamp` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP; 
-1

私は、これは動作するはずと思った:あなたは現在のタイムスタンプを取得したい場合

ALTER TABLE customers ADD COLUMN s_timestamp TIMESTAMP DEFAULT NULL; 
+1

これはありません。 'TIMESTAMP'カラムには' NULL 'が挿入されているときに[特別な自動動作](http://dev.mysql.com/doc/refman/5.5/en/timestamp-initialization.html)があります。ヌルマーカーを設定するには、明示的に列をNULL可能にする必要があります。 –

+0

はpostgresでテストされました - それは – niyou

+0

と書かれていますが、質問はMySQLの動作に関するものです。 –

関連する問題