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
。
我创建了一些具有时间戳数据类型的 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
。