Вы можете использовать Функция даты и времени MySQL date_add()
для вычисления цели return_date
. Предполагая, что дата, когда книга была отдана в аренду, называется loan_date
, а продолжительность хранится в loan_duration
, выраженном в днях:
select
book_id,
student_id,
loan_date,
date_add(loan_date, interval loan_duration day) return_date
from loan_table
В операторе обновления:
update loan_table
set return_date = date_add(loan_date, interval loan_duration day)
where return_date is null -- only compute the return_dates that were not yet computed
Редактировать
Если вы хотите, чтобы это значение было автоматически сгенерировано , можно использовать сгенерированный сохраненный (или виртуальный) столбец (доступноначиная с MySQL 5.7). Это работает путем определения правила вычисления, которое MySQL будет автоматически применять при вставке или обновлении записи.
Демонстрация на БД Fiddle :
-- set up
create table loan_table(
id int primary key auto_increment,
book_id int,
student_id int,
loan_date date,
loan_duration int,
-- here is the generated column
return_date date
as (date_add(loan_date, interval loan_duration day)) stored
);
-- perform an insert
insert into loan_table(book_id, student_id, loan_date, loan_duration)
values(1, 1, '2019-11-02', 3)
-- check the computed value
select * from loan_table;
id | book_id | student_id | loan_date | loan_duration | return_date
-: | ------: | ---------: | :--------- | ------------: | :----------
1 | 1 | 1 | 2019-11-02 | 3 | 2019-11-05