tidb 不支持向后延后90天的日期么?

password_expire_date datetime NOT NULL DEFAULT ((now() + interval 90 day)) COMMENT ‘密码过期时间’,

类似这种建表语句,create table t11(id int, password_expire_date datetime NOT NULL DEFAULT (now() , interval 90 day)) ;

tidb默认值不支持使用函数的,不行就用虚拟列吧,类似这样,
CREATE TABLE t11 (
id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
password_expire_date DATETIME AS (DATE_ADD(created_at, INTERVAL 90 DAY)) – 生成列
);

2 个赞

你这个写法是哪里来的
TiDB 是按兼容 Mysql 做的,看起来 TiDB 和 Mysql 都不支持
https://docs.pingcap.com/zh/tidb/stable/data-type-default-values/#数据类型的默认值
https://dev.mysql.com/doc/refman/8.4/en/timestamp-initialization.html

查了下 mysql5.7和mysql8.0 都有这个用法
create_time >= DATE_SUB(CURDATE(),INTERVAL 90 DAY)
TiDB好像没有

大部分语法都支持,到那时函数支持的比较少。刚好你遇到一个

mysql 5.7和8.0都不支持这种建表语句的

tidb有的

这个是不支持