如何在MySql的create table自身中创建一个需要当前时间戳并添加一些分钟的属性(例如,添加30分钟)。

create table (order_time timestamp default current_timestamp,
              est_time timestamp default current_timestamp date_add(min,30));

shows syntax error


或在更改时

alter table  orders modify est_time timestamp date_add(order_time,interval 30 min);

create table (order_time timestamp default current_timestamp,
              est_time timestamp default current_timestamp date_add(min,30));

最佳答案

如果希望est_time总是比order_time晚半小时,则可以使用生成的列:

create table orders(id int,
                    order_time timestamp default current_timestamp,
                    est_time timestamp generated always as (order_time + interval 30 minute));


然后,您可以插入带有或不带有order_time值的值,并且est_time将是order_time + 30分钟:

insert into orders (id, order_time) values (1, '2019-08-08 12:30:00');
insert into orders (id) values (2);
select * from orders


输出(截至2019-08-08 7:43:04):

id  order_time              est_time
1   2019-08-08 12:30:00     2019-08-08 13:00:00
2   2019-08-08 07:43:04     2019-08-08 08:13:04


Demo on dbfiddle

关于mysql - 在创建表本身中使用Date_add()或add_time()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57406191/

10-09 20:21