【问题标题】:Sqlite select a record inserted or updated in last 5 minutesSqlite 选择最近 5 分钟内插入或更新的记录
【发布时间】:2021-04-21 05:05:03
【问题描述】:

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

               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 中查询最近五分钟内更新或插入的记录的时间?

【问题讨论】:

  • 实际上您的最后 2 个查询应该可以正常工作。运行它们时会发生什么?
  • 他们返回一条记录,但该记录的时间超过了 5 五分钟。日子还是一样。
  • 你能包括样本输入和输出吗?

标签: sqlite date datetime select


【解决方案1】:

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

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

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

【讨论】:

  • 你是对的,localtime 参数解决了它。谢谢!。
猜你喜欢
  • 1970-01-01
  • 2015-09-28
  • 1970-01-01
  • 2021-12-22
  • 2012-05-07
  • 2013-10-28
  • 2021-12-01
  • 1970-01-01
  • 2012-12-15
相关资源
最近更新 更多