我有一个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)。
答案 0 :(得分:0)
答案 1 :(得分:0)
要回答这个问题,以防其他人想知道如何在sqlite中正确地进行日期/时间算术。
正确答案是:
更新mytable set stale = 1其中strftime('%s',datetime('now')) - strftime('%s',last_accessed)> 300;
但是,我实际上并不需要表格中的日期时间格式,而是改为选择数字字段。我不是在寻求这个问题的更多答案。
感谢。