使用 obsidian tasks 进行简单查询
本文将简单介绍如何使用obsidian tasks
进行简单查询。
说明
tasks
用户指南:publish.obsidian.md/tasks/Intro...
本文使用的tasks
版本为:7.18.3
obsidian tasks
允许在obsidian
仓库中的任何地方创建任务,并且在任何地方查询任务、且更新修改等,其查询非常强大。
在查询中,需要将查询语句添加到```````tasks````中,例如:
go
```tasks
查询语句
```
如果需要添加注释,则直接在前面添加#即可,例如:
go
```tasks
# 查询未被结束的任务
not done
```
前置说明
- 在看本篇文章的时候,默认已经学会了
tasks
基本操作,包括创建任务、结束任务、修改任务等等。 - 需要理解
due
、start
、scheduled
等名词含义等。 - 需要知道关于
bool
运算符含义,比如AND
、OR
、NOT
等。
简单查询
查询所有任务
直接使用tasks
便可以查看所有任务,包括已经结束、取消了的。
go
```tasks
```
查询未结束的任务
在查询语句中,加上not done
,即可查询未被结束、取消的任务。
go
```tasks
not done
```
查询已经结束的任务
在查询语句中,加上done
,即可查询已经结束,或者被取消的任务。
go
```tasks
done
```
查询被取消的任务
在查询语句中,加上has cancelled date
,该语句的含义是cancelled
必须有值,该操作即可查询被取消的任务。
go
```tasks
# 查询已经被取消的任务
has cancelled date
```
以树类型展示任务
如果有树类型任务,可加上show tree
来展示层次关系。
例如,有树类型任务如下:
markdown
- [ ] 总任务
- 任务1
- [ ] 步骤1 🛫 2025-03-23 📅 2025-03-25
- [ ] 步骤2
- [ ] 步骤3
- 任务2
- [ ] 步骤1
- [ ] 步骤2
- [ ] 步骤3
使用show tree
可以展示类型,比如:
go
```tasks
show tree
```
其结果为:
关于时间的查询
在tasks
中,关于时间的查询,其中关键字如下:
-
in x
:将匹配
x
日期。 -
before x
:将匹配
x
日期之间的所有日期。 -
after x
:将匹配
x
日期之后的所有日期。 -
in or before x
:将匹配
x
日期之前的所有日期,包括x
。 -
in or after x
:将匹配
x
日期之后的所有日期,包括x
。
看起来确实很难理解,但是我将其做成了一张表,如下:
其中:
- 其中
in 2025-03-10
只能匹配到一个任务。 before 2025-03-10
可以匹配到2025-03-10
之前的所有任务,但是不包含2025-03-10
。after 2025-03-10
可以匹配到2025-03-10
之后的所有任务,但是不包含2025-03-10
。in or before 2025-03-10
可以匹配到2025-03-10
之前的所有任务,包含2025-03-10
。in or after 2025-03-10
可以匹配到2025-03-10
之后的所有任务,包含2025-03-10
。
tasks
也有自己相对日期的词,如下:
today
: 今天tomorrow
: 明天yesterday
: 昨天-15 days
:15天前+15 days
:15天后next week
:下周一last week
:上周一this week
:本周一
有了上述铺垫,查询起来就简单多了。
查询本周内没有完成的任务
直接查询下周一之前,但是不包含下周一即可,查询语句:
go
```tasks
not done
starts before next week
```
该查询语句会查询到开始时间start
为下周一之前的所有任务,包括过去的任务,比如今天是2025-03-10
,恰好2025-03-09
也有任务且状态没有完成,那么也会被查询出来。
查询今天之前没有完成的任务
查询语句如下:
go
```tasks
not done
starts before today
```
该查询语句会查询开始时间在今天之前(不包含今天)为完成的任务。
你还可以这样写:
go
```tasks
not done
starts before +0 day
```
查询本周内完成的任务
go
```tasks
done
(starts before next week) AND (starts in or after this week)
```
该查询语句是一条组合语句:
-
done
: 表示已经完成了的任务 -
(starts before next week) AND (starts in or after last week)
:表示开始时间在下周一之前和和本周一(包含本周一)之后。
查询已经过期且截止日期在7天内的未做的任务
go
```tasks
not done
(starts before +0 days) AND (due before +7 days)
```
该查询语句和上述类似,这里不解释了。
查询所有 start
在过去 1 个月但 due
在未来 1 个月,priority
是 medium
或 high
,且 tags
只能包含 #work
或 #study
,不能包含 #personal
,同时 scheduled
不为空的任务
scss
```tasks
not done
(starts after last 1 month) AND (due before next 1 month) AND ((priority is medium) OR (priority is high)) AND ((tags include #work) OR (tags include #study)) AND (has scheduled date) AND (tags do not include #personal)
```
starts after last 1 month
:开始时间在上个月之后。due before next 1 month
: 截止时间在下一个之前。(priority is medium) OR (priority is high)
: 优先级为medium
或者为high
。(tags include #work) OR (tags include #study)
:tags
为#work
或者是#study
。has scheduled date
:scheduled
必须有值。tags do not include #personal
:tags
不包含#personal
。
总结
最近在使用tasks
,实在是太方便了,随时随地都可以创建任务,然后查询过程中,都会被收集起来,只是新建看板查询任务列表过于繁琐,需要自己编写查询语句,不过在短暂的学习之后,使用起来非常得心应手。