Sqlite选择最近5分钟插入或更新的记录

时间:2021-01-16 10:09:38

标签: sqlite date datetime select

我试图在日期列 updated_at 的格式为 YYYY-MM-DD HH:MM:SS 的 sqlite3 数据表中选择过去五分钟内已插入或更新的任何记录:

               CREATE TABLE IF NOT EXISTS emp_tb(
                    emp_id INTEGER PRIMARY KEY NOT NULL,
                    emp_names TEXT NOT NULL,
                    emp_number TEXT NOT NULL UNIQUE,
                    ent_id INTEGER NOT NULL,
                    active INTEGER NOT NULL DEFAULT "0",
                    updated_at TEXT NULL DEFAULT (datetime('now', 'localtime')),
                    syncstatus INTEGER NOT NULL DEFAULT "0")

我尝试了以下操作,但它返回当天的任何记录,不一定在过去 5 分钟内更新,或者根本没有更新:

SELECT emp_id, emp_names FROM emp_tb WHERE ent_id = ? \
      AND date(updated_at) = date('now') AND time(updated_at) >= time('now','-5 minutes')
SELECT emp_id, emp_names FROM emp_tb WHERE ent_id = ? \
      AND datetime(updated_at) >= datetime('now','-5 minutes')
SELECT emp_id, emp_names FROM emp_tb WHERE ent_id = ? \
    AND updated_at >= datetime('now','-5 minutes')

我知道如何在 Mysql 中执行此操作,但是如何在 Sqlite3 中查询最近五分钟内更新或插入的记录的时间?

1 个答案:

答案 0 :(得分:2)

updated_at 具有正确的格式,因此无需对其值使用函数 datetime()

您的最后一个查询应该可以工作,但可能存在时区问题,所以也使用 'localtime':

SELECT emp_id, emp_names 
FROM emp_tb 
WHERE ent_id = ? 
AND updated_at >= datetime('now', '-5 minutes', 'localtime')