SQLite - добавить дни к определенной дате во вставке - PullRequest
0 голосов
/ 19 мая 2019

Я использую SQLite. Допустим, у меня есть такая таблица:

    CREATE TABLE dates (
          date1 DATE NOT NULL PRIMARY KEY,
          date2 DATE NOT NULL
    );

Теперь я хочу, чтобы date1 была определенной датой, а date2 - date1 + 10 дней. Как я могу вставить значения в таблицу, используя только date1 для получения их обоих?

единственное, что я мог найти в интернете, было что-то подобное, но это, очевидно, не работает, за исключением случая, когда я заменяю дату ('date1', + 10days)) на дату ('now', + 10days), но это не то, что я хочу:

    insert into dates values('2012-01-01', date('date1','+10 days'))

Есть идеи?

Ответы [ 2 ]

1 голос
/ 19 мая 2019

вызвать триггер для автоматической вставки даты2 каждый раз, когда вы вставляете дату1 в таблицу.

CREATE TRIGGER date2_trigger AFTER INSERT ON dates
BEGIN
    UPDATE dates SET date2 = DATE(NEW.date1, '+10 days') WHERE date1 = NEW.date1;
END;

-- insert date1 like so; date2 will be set automatically.
INSERT INTO dates(date1) VALUES('2012-01-01'); 
0 голосов
/ 19 мая 2019

Вместо INSERT ... VALUES используйте INSERT ... SELECT следующим образом:

insert into dates (date1, date2)
select t.date1, date(t.date1, '+10 days')
from (
  select '2012-01-01' as date1
  union all 
  select '2012-01-02'
  union all 
  .................... 
) t

См. Демоверсию .
Результаты:

| date1      | date2      |
| ---------- | ---------- |
| 2012-01-01 | 2012-01-11 |
| 2012-01-02 | 2012-01-12 |
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...