在阅读了这里的十几条回复并对其进行了测试后,我别无选择,只能寻求帮助。
我的目标很简单,我希望从中选择数据
- 前一小时
- 前一天
我所具有的表使用类型为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')