SQLite技术问询:如何查询当前时间后的下一个未来时间条目
解决方法:查询下一个未来时间条目
你的需求是找出当前时间之后最早的那个时间条目,原来的SQL存在几个问题:date(NOW)写法错误(NOW()是函数需要加括号),没有筛选未来时间的条件,排序方向也不对。
正确的SQL语句应该是这样的(假设你的时间字段名为task_time,如果不是请替换成实际字段名):
SELECT * FROM tasks WHERE task_time > NOW() ORDER BY task_time ASC LIMIT 1;
语句解释:
WHERE task_time > NOW():筛选出所有时间晚于当前时间的记录,NOW()会返回当前系统的日期和时间(比如你例子里的2022-09-16 14:20:04)。ORDER BY task_time ASC:将筛选后的记录按时间从小到大排序,这样最早的未来时间会排在第一位。LIMIT 1:只取排序后的第一条记录,也就是你要的下一个未来时间条目。
结合你的例子,当当前时间是2022-09-16 14:20:04时,WHERE条件会留下第3、4条记录,升序排序后第3条2022-09-16 14:31:27排在最前面,用LIMIT 1就能准确取出这条数据。
内容的提问来源于stack exchange,提问作者Christopher Da Bowig
相关产品推荐
相关产品推荐

