2016-06-01 5 views
0

timestampデータ型を持つテーブルをいくつか作成しました。いくつかのタイムスタンプを記述するとデフォルトでcurrent_timestampが表示され、デフォルトのタイムスタンプのカラムは0000-00-00 00:00:00.000000と表示されます。私はタイムスタンプの列はcurrent_timestampにデフォルトになると思った。私は、ドキュメントから与えられた範囲にない日付を与えると、値を0000-00-00 00:00:00.000000として保存することも理解しています。しかし、それはどのようにdescテーブルの出力で異なるデフォルト値を表示しますか?以下はMySQL/MariaDBタイムスタンプ、datetimeデータ型

desc screen; 
+-----------------+--------------+------+-----+---------------------------- 
| Field   | Type   | Null | Key | Default 
+-----------------+--------------+------+-----+---------------------------- 
| SCREEN_ID  | smallint(6) | NO | PRI | NULL 
| SCREEN_NAME  | varchar(100) | NO | UNI | NULL 
| CREATED_BY  | varchar(30) | NO |  | NULL 
| CREATED_DATE | timestamp(6) | NO |  | CURRENT_TIMESTAMP(6) 
| UPDATED_BY  | varchar(30) | NO |  | NULL 
| UPDATED_DATE | timestamp(6) | NO |  | 0000-00-00 00:00:00.000000 
| SYSCREATED_DATE | timestamp(6) | NO |  | CURRENT_TIMESTAMP(6) 
| SYSUPDATED_DATE | timestamp(6) | NO |  | CURRENT_TIMESTAMP(6) 
+-----------------+--------------+------+-----+---------------------------- 

私を助けてください、私はテーブルの作成

CREATE TABLE SCREEN (
    SCREEN_ID SMALLINT AUTO_INCREMENT NOT NULL, 
    SCREEN_NAME VARCHAR(100), 
    CREATED_BY VARCHAR(30), 
    CREATED_DATE TIMESTAMP(6), 
    UPDATED_BY VARCHAR(30), 
    UPDATED_DATE TIMESTAMP(6), 
    SYSCREATED_DATE TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP, 
    SYSUPDATED_DATE TIMESTAMP(6) DEFAULT CURRENT_TIMESTAMP, 
    CONSTRAINT SCREEN_PK PRIMARY KEY(SCREEN_ID) 
); 

に使用DDLです。私は、この不一致のためにすべてのタイムスタンプ列をdatetimeに変更する予定です。それはお勧めですか?

+0

好奇心の高まりから、 'TIMESTAMP(6)'は何をすべきでしょうか? – Mjh

+0

私はあなたの質問を得ることができません。これらの列を使用して、新しい行が挿入されるか、既存の行が更新されるときにタイムスタンプを保存しています。この形式でタイムスタンプの値を格納します。2015-08-03 19:49:43.187081 – user6404269

+0

なぜフィールドタイプの隣に '(6) 'があるのだろうと思います。なぜあなたはディスプレイの長さをカットしますか?それには理由があるはずです。 – Mjh

答えて

0

UPDATED_DATEカラムにはデフォルト値はありません。したがって、デフォルト値の列にいくつかのごみが表示されます...他のフィールドと同様にDEFAULT CURRENT_TIMESTAMPに変更してください。

+0

こんにちはJehy、お返事いただきありがとうございます。作成された日付と更新された日付の既定値が指定されていません...以前に投稿したDDLで同じものを確認できます。ですから、私の質問はなぜcreated_dateにupdated_dateが0000-00のように表示されているのかをcurrent_timestampに示しています。 – user6404269

+0

@ user6404269ああ、申し訳ありませんが、どの列が疑わしいのか説明しませんでした。 'created_date'と' updated_date'では、違いはありません。列を同じにするためにテーブルを修正してみてください。ちなみに、TIMESTAMP型はサーバーのタイムゾーンに依存しているので、私はTIMESTAMP型を使用してアドバイスしません。タイムスタンプ(6)に関する私のコメントも見てください。 – Jehy

+0

ありがとうJehy、私はすべてのタイムスタンプの列をdatetimeに変更しました – user6404269

関連する問題