2024年3月12日发(作者:)

mysql> create table temp5(id int,tstamp datetime default date_add(now(),interval 1 day)); # 5.7版本及以前

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'date_add(now(),interval 1 day))' at line 1

mysql> select date_add(now(),interval 1 day);

+--------------------------------+

| date_add(now(),interval 1 day) |

+--------------------------------+

| 2020-04-22 22:11:52 |

+--------------------------------+

1 row in set (0.00 sec)

mysql> create table temp5(id int,tstamp datetime default (date_add(now(),interval 1 day))); # 8.0版本

Query OK, 0 rows affected (0.16 sec)

mysql> desc temp5;

+--------+----------+------+-----+--------------------------+-------------------+

| Field | Type | Null | Key | Default | Extra |

+--------+----------+------+-----+--------------------------+-------------------+

| id | int(11) | YES | | NULL | |

| tstamp | datetime | YES | | (now() + interval 1 day) | DEFAULT_GENERATED |

+--------+----------+------+-----+--------------------------+-------------------+

2 rows in set (0.00 sec)

mysql> insert into temp5(id) values(1);

Query OK, 1 row affected (0.06 sec)

mysql> select * from temp5;

+------+---------------------+

| id | tstamp |

+------+---------------------+

| 1 | 2020-04-22 22:13:27 |

+------+---------------------+

1 row in set (0.00 sec)

mysql> drop table temp;

Query OK, 0 rows affected (0.04 sec)

mysql> create table temp(id int,id2 int default (1+1));

Query OK, 0 rows affected (0.13 sec)

mysql> desc temp;

+-------+---------+------+-----+---------+-------------------+

| Field | Type | Null | Key | Default | Extra |

+-------+---------+------+-----+---------+-------------------+

| id | int(11) | YES | | NULL | |

| id2 | int(11) | YES | | (1 + 1) | DEFAULT_GENERATED |

+-------+---------+------+-----+---------+-------------------+

2 rows in set (0.01 sec)

mysql> insert into temp(id) values(10);

Query OK, 1 row affected (0.08 sec)

mysql> select * from temp;

+------+------+

| id | id2 |

+------+------+

| 10 | 2 |

+------+------+

1 row in set (0.00 sec)