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に変更する予定です。それはお勧めですか?
好奇心の高まりから、 'TIMESTAMP(6)'は何をすべきでしょうか? – Mjh
私はあなたの質問を得ることができません。これらの列を使用して、新しい行が挿入されるか、既存の行が更新されるときにタイムスタンプを保存しています。この形式でタイムスタンプの値を格納します。2015-08-03 19:49:43.187081 – user6404269
なぜフィールドタイプの隣に '(6) 'があるのだろうと思います。なぜあなたはディスプレイの長さをカットしますか?それには理由があるはずです。 – Mjh