更新超过n分钟的记录

时间:2011-02-22 10:07:14

标签: sqlite

我有一个sqlite数据库,其中包含一个名为last_accessed的数据时间字段和另一个名为stale的字段。

如何更新超过5分钟的记录的陈旧字段?

e.g。

这似乎不起作用。

更新mytable set stale = 1其中(datetime('now') - last_accessed)> 300;

事实上 select datetime('now') - '2011-02-22 08:48:34'; 返回0。

如何在sqlite3中进行算术运算?

编辑: 由于我将last_accessed转换为日期时间,实际上它只需要一个秒字段。你认为我应该将该字段转换为秒字段。然后我不需要做strftime('%s',time('now')) - strftime('%s',last_accessed)?

EDIT2: 据我所知,没有difftime功能。我发现你必须使用strftime('%s',datetime('now')) - ...格式才能使它工作。但是,我只是简单地转换为一个整数字段,我直接存储时间(NULL)。

2 个答案:

答案 0 :(得分:0)

我认为应该是

select datetime('now') - datetime('2011-02-22 08:48:34');

或类似的东西(见examples)。

答案 1 :(得分:0)

要回答这个问题,以防其他人想知道如何在sqlite中正确地进行日期/时间算术。

正确答案是:

更新mytable set stale = 1其中strftime('%s',datetime('now')) - strftime('%s',last_accessed)> 300;

但是,我实际上并不需要表格中的日期时间格式,而是改为选择数字字段。我不是在寻求这个问题的更多答案。

感谢。