读完这里的十几条回复并进行测试后,我别无选择,只能寻求帮助。
我的目标很简单,我希望从以下位置选择数据:
- 前一小时
- 前一天
我的表使用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
这是不正确的,因为它将返回前一天的数据+今天的数据。我不需要那个,我只需要前一天的数据。
-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')
关于sqlite - 从 SQLite 正确选择以前的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71347280/