MySQL/MariaDB 时间戳、日期时间数据类型

MySQL/MariaDB timestamp, datetime datatypes

我创建了一些具有时间戳数据类型的 table。当我做描述时,很少有时间戳列默认显示 current_timestamp,很少有时间戳列默认显示 0000-00-00 00:00:00.000000。我认为时间戳列只会默认为 current_timestamp。我也明白,如果我们给出那些不在文档给定范围内的日期,它会将值存储为 0000-00-00 00:00:00.000000。但是它如何在 desc table 输出中显示不同的默认值?

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)
+-----------------+--------------+------+-----+----------------------------

下面是我用来table创建的DDL

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)
);

请帮助我。由于这种差异,我计划将所有时间戳列更改为日期时间。是否可取?

您的 UPDATED_DATE 列没有默认值。因此,describe 在默认值列中显示了一些垃圾...像其他字段一样将其更改为 DEFAULT CURRENT_TIMESTAMP