我试图在日期列 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 中查询最近五分钟内更新或插入的记录的时间?
答案 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')