我正在使用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'))
有什么想法吗?
答案 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 |