从 SQLite 中正确选择以前的日期

Selecting previous dates from SQLite correctly

看了十几个回复,测试了下,无奈求助

我的目标很简单,我希望select数据来自:

我使用的 table 使用类型为 TEXT 的列,名称为“timestamp”,时间格式正在保存的是:2022-03-04 05:44:11.

查询应该很简单,但据我所知,有许多函数不受支持,例如 DATE_SUB,因此我测试了我在这里找到的内容。

例如:

SELECT `timestamp` FROM ... where datetime(timestamp) >= datetime('now', '-1 Day')

结果:

2022-03-03 16:33:35
2022-03-03 15:05:17
2022-03-04 05:44:11
2022-03-04 05:40:22
2022-03-04 05:36:38
2022-03-04 05:25:53
2022-03-04 05:16:16

这是不正确的,因为它将 return 前一天的数据 + 今天包含在内。我不要那个,我只需要前一天。

-1 小时和其他所有内容都会发生同样的事情。我也尝试过使用 strftime 但没有成功。

这个任务应该非常容易实现,但 SQLite 不会“玩球”。

有人可以告诉我怎么做吗?

非常感谢

前一天的行使用函数date()去掉时间戳的时间部分:

WHERE date(timestamp) = date('now', '-1 day')

对于前一小时的行,使用带有去除分钟和秒的修饰符的函数 strftime()

WHERE strftime('%Y-%m-%d %H', timestamp) = strftime('%Y-%m-%d %H', 'now', '-1 hour')