【问题标题】:Get records for the latest timestamp in SQLite获取 SQLite 中最新时间戳的记录
【发布时间】:2014-04-07 16:16:42
【问题描述】:

我知道其他人之前已经问过这个问题,但所有这些问题都使用 MySQL 或其他数据库。在 SQLite 中怎么做?我在问,因为 SQLite 没有单独的日期数据类型。我已经用这个架构创建了表

片段:

CREATE TABLE x (
id INTEGER NOT NULL,
timestamp TIMESTAMP NOT NULL,
PRIMARY KEY(timestamp,id)
);

这样的东西会起作用吗?

SELECT * FROM x
WHERE DATE(timestamp) = (
    SELECT MAX(DATE(timestamp)) FROM x
)

【问题讨论】:

  • 你的时间戳列中数据的格式是什么? ORDER BY timestamp DESC LIMIT 1 的一些变体可能会有所帮助。
  • 大概是这样的:2014-03-05T20:00:00.000

标签: sqlite datetime timestamp


【解决方案1】:

2014-03-05T20:00:00.000 这样的时间戳具有字典(字母)顺序与时间顺序相同的属性,您可以在它们上使用普通的旧比较运算符和ORDER BY,如下所示:

SELECT * FROM x ORDER BY timestamp DESC LIMIT 1;

【讨论】:

  • 抱歉给您添麻烦了。它会是这样的:2014-03-05 20:00:00.000 基本上,不是T,而是有一个空格。这还会成立吗?
  • 是的,只要分量是递减量级就没有关系(yyyy-MM-dd HH:mm:ss.zzz 符合模式)。
  • 非常感谢!正是我需要的
  • 另一个疑问!如何编辑它以便我获得每个 id 的最新时间戳记录?每个 id 可以有许多具有不同时间戳的记录。 id的数量是有限的(一个小数字)
  • 您需要确定一个时间戳来执行您的 ORDER BY。如果您有多个日期,例如,它是在某个日期订购、在另一个日期处理、在另一个日期交付的商品,或者只确定一种日期,或者甚至不使用日期 - 使用 ID 或订单号.如果没有,请在表中添加一个自动增量列。例如,假设我最初按订单日期订购,然后按交货日期订购。我不确定如果我比另一天早一天下订单,但如果我想首先按交货日期去,那么我是否会看到重新排名较低的价值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
相关资源
最近更新 更多