Сохраняйте интервалы от года до месяца как целое число, считая количество месяцев (12 месяцев = 1 год), а интервалы от дня до секунды - целое число секунд.
Затем можно использоватьDATE_ADD
функция, чтобы выяснить ваши даты.Вот пример SQL Fiddle , показывающий интервалы хранения в виде месяцев и секунд и добавление их к фиксированной дате:
Настройка схемы MySQL 5.6 :
create table mytab (dt date);
insert into mytab values (date '2018-01-01');
create table intervals (months int, seconds int);
insert into intervals values (13, 3661), (-13, -3661);
Запрос 1 :
select dt
, months
, seconds
, date_add(date_add(dt, interval months month)
, interval seconds second) result
from mytab cross join intervals
Результаты :
| dt | months | seconds | result |
|------------|--------|---------|----------------------|
| 2018-01-01 | 13 | 3661 | 2019-02-01T01:01:01Z |
| 2018-01-01 | -13 | -3661 | 2016-11-30T22:58:59Z |