前提
本文分享的 SQL 代码推荐配合以下规定格式(无序列表 + 任务)使用:
-
任务分类(自定义,最好使用块引用,方便使用反链汇总)
- 具体任务 1
- 具体任务 2
- ...
方法 1——利用嵌入块
实现代码
1.已完成任务
SELECT * FROM blocks WHERE (id in (SELECT parent_id FROM blocks WHERE type='l' AND markdown LIKE '%[x]%' AND subtype='t' )) ORDER BY updated DESC
2.待办任务
SELECT * FROM blocks WHERE (id in (SELECT parent_id FROM blocks WHERE type='l' AND markdown LIKE '%[ ]%' AND subtype='t' )) ORDER BY updated DESC
实现效果
特点
- 优点:
- 可以同时显示任务项和所属分类。
- 即使未按照规定格式记录任务,也可通过任务记录所在的文档名称显示任务项的从属关系。
- 所有任务都能够直观显示。
- 缺点:
- 无法直观显示任务的创建时间和更新(完成)时间。
- 并列的任务(同一个分类下多个子任务)如果只有部分完成则无法完全区分开,“已完成任务”和“待完成任务”中都将显示。
- 所有任务都显示出来占据篇幅大,可以通过
LIMIT
限制。
方法 2——利用 Query 挂件
实现代码
1.已完成任务
SELECT
CASE
WHEN b.fcontent == ''
THEN '==**未分类**=='
ELSE b.fcontent
END AS __1____pre__任务分类,
'['||
CASE
WHEN length(replace(b.content,b.fcontent,''))>16
THEN substr(replace(b.content,b.fcontent,''),1,16)||'...'
ELSE replace(b.content,b.fcontent,'')
END||'](siyuan://blocks/'||b.id||')' AS __2____pre__已完成任务列表,
b.created AS __3____datetime__创建时间,b.updated AS __4____datetime__更新时间,
'['||b.hpath||'](siyuan://blocks/'||b.id||')' AS __5____pre__任务路径
FROM
blocks AS b
WHERE
( id in
(SELECT parent_id FROM blocks
WHERE
(type = 'l'
AND
markdown LIKE '%[x]%'
AND
subtype = 't'
AND
hpath NOT LIKE '%从这里开始%'
)
)
)
ORDER BY
b.updated DESC
LIMIT 20
2.待办任务
SELECT
CASE
WHEN b.fcontent == ''
THEN '==**未分类**=='
ELSE b.fcontent
END AS __1____pre__任务分类,
'['||
(CASE
WHEN length(replace(b.content,b.fcontent,''))>16
THEN substr(replace(b.content,b.fcontent,''),1,16)||'...'
ELSE replace(b.content,b.fcontent,'')
END)||'](siyuan://blocks/'||b.id||')' AS __2____pre__待完成任务列表,
b.created AS __3____datetime__创建时间,b.updated AS __4____datetime__更新时间,
'['||b.hpath||'](siyuan://blocks/'||b.id||')' AS __5____pre__任务路径
FROM
blocks AS b
WHERE
( id in
(SELECT parent_id FROM blocks
WHERE
(type = 'l'
AND
markdown LIKE '%[ ]%'
AND
subtype = 't'
AND
hpath NOT LIKE '%从这里开始%'
)
)
)
ORDER BY
b.updated DESC
LIMIT 20
实现效果
特点
- 优点:
- 显示效果更直观,包括任务分类、任务项、创建时间、更新(完成)时间、任务记录的位置。
- 对于任务项字数比较多的问题,为避免列宽过大,仅显示前 16 个字符。
- 占据篇幅更小。
- 缺点:
- 需要严格按照规定格式记录任务,否则显示效果不佳(如上图标注)。
- 并列的任务(同一个分类下多个子任务)在列表中只会显示第一个任务的文字,要查看未完成/已完成的任务需要通过悬浮窗查看。
总结
- 以上方法参考了其他用户的帖子,感谢。
- 方法 1 和方法 2 各有优缺点,目前还不完美,大家根据需要选用。
- 本文所使用的任务记录方法不限制记录位置,可以随时随地记录,推荐在 daily note 中记录。任务分类(块引用)放在无序列表中,方便后期利用反链整理汇总。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于