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



在阅读了这里的十几条回复并对其进行了测试后,我别无选择,只能寻求帮助。

我的目标很简单,我希望从中选择数据

  • 前一小时
  • 前一天

我所具有的表使用类型为TEXT的列时间戳";,保存时间的格式为: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

这是不正确的,因为它将返回前一天的数据+包括今天的数据。我不想那样,我只需要前一天。

同样的事情也发生在-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')

相关内容

  • 没有找到相关文章

最新更新