SQLite-在插入的特定日期添加天数

时间:2019-05-19 14:21:19

标签: sqlite date insert

我正在使用SQLite。 假设我有一张这样的桌子:

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

现在,我希望date1为某个日期,date2为date1 + 10天。 如何仅通过使用date1来将它们插入到表中?

我只能在互联网上找到类似的东西,但是它显然不起作用,除了我用date('now',+ 10days)替换date('date1',+ 10days))的情况,但这不是我想要的:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

每次将date1插入表中时,触发一个自动插入date2的触发器。

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'); 

答案 1 :(得分:0)

像这样使用INSERT ... SELECT代替INSERT ... VALUES:

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

请参见demo
结果:

| date1      | date2      |
| ---------- | ---------- |
| 2012-01-01 | 2012-01-11 |
| 2012-01-02 | 2012-01-12 |