mysql怎么默认时间
时间 : 2023-07-27 19:58:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在MySQL中,可以使用以下两种方式来设置默认时间。

1. 使用TIMESTAMP类型:

在创建表时,可以将某列的数据类型设置为TIMESTAMP,并指定DEFAULT CURRENT_TIMESTAMP属性。这样,在插入数据时,如果没有显式指定该列的值,就会自动使用当前的时间作为默认值。

例如,创建一个名为`example_table`的表,并将`created_at`列的默认值设置为当前时间:

```sql

CREATE TABLE example_table (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

);

```

当插入数据时,可以省略`created_at`列的值,系统会自动填入当前时间:

```sql

INSERT INTO example_table (name) VALUES ('John');

```

2. 使用DATETIME类型和触发器:

如果需要更灵活地控制默认时间的生成逻辑,可以使用DATETIME类型,并结合触发器来实现。首先,将某列的数据类型设置为DATETIME,并不添加DEFAULT属性。

例如,创建一个名为`example_table`的表,并将`created_at`列的默认值设置为空:

```sql

CREATE TABLE example_table (

id INT PRIMARY KEY AUTO_INCREMENT,

name VARCHAR(50),

created_at DATETIME

);

```

然后,使用以下SQL语句创建一个触发器,当插入数据时,自动生成默认时间:

```sql

DELIMITER //

CREATE TRIGGER set_default_time

BEFORE INSERT ON example_table

FOR EACH ROW

BEGIN

IF NEW.created_at IS NULL THEN

SET NEW.created_at = NOW();

END IF;

END //

DELIMITER ;

```

当插入数据时,可以省略`created_at`列的值,触发器会自动填入当前时间:

```sql

INSERT INTO example_table (name) VALUES ('John');

```

无论是使用TIMESTAMP类型还是DATETIME类型结合触发器,都可以实现设置默认时间的功能。选择哪种方式取决于具体的需求和数据库设计。