嵌入快 SQL 自定义属性查询

我想在 daily note 中汇总每日的任务,目前是想利用任务列表插件生成的自定义属性 plugin-task-list-handleAt,用 sql 匹配年月日是当天的块,尝试了好久都未能成功,论坛也找不到方法,请大佬帮忙写下 sql 代码,谢谢。

image.png

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22629 引用 • 90886 回帖 • 1 关注
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    8241 引用 • 37623 回帖 • 158 关注

相关帖子

被采纳的回答
  • wilsons 2

    哦哦,这样应该可以吧

    SELECT * FROM blocks
    WHERE ial LIKE '%custom-plugin-task-list-handleAt="' || strftime('%Y%m%d', datetime('now')) || '%';
    

    如果不行,把你块自定义属性名截图看看,比如

    image.png

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • ONIONLYONE

    大佬,我的块有自定义属性,属性值是 20241201211510 这样的日期格式,我想用 sql 匹配当天的的年月日,比如今天的就是匹配自定义属性值是 20241102 开头的块。明天会自动更新为匹配自定义属性值是 20241103 开头的块。

    1 回复
  • wilsons 2

    哦哦,这样应该可以吧

    SELECT * FROM blocks
    WHERE ial LIKE '%custom-plugin-task-list-handleAt="' || strftime('%Y%m%d', datetime('now')) || '%';
    

    如果不行,把你块自定义属性名截图看看,比如

    image.png

    3 回复
  • ONIONLYONE

    可以了大佬,非常感谢。截图帖子里有。

    1 回复
  • 哦哦,恭喜 ^ω^

  • 大佬,有没办法把这个自定义属性的时间格式在模板列显示出来,这样就能实现数据库获取到这个任务的时间了。就可以充分利用到任务列表那个插件的日历视图了,而不是在数据库里设置时间插件那里看不到日期要再设置一次

    2 回复
  • ONIONLYONE 1 评论

    佬,能细说一下想要达到的应用场景吗?想学习一下。

    数据库模版列代码 - 获取绑定的任务列表块的状态 0 看我这个贴,我主要用数据库管理任务,把子任务添加到数据库里,能把这个插件的时间属性带进数据库里就不用重复设置了
    5kyfkr
  • wilsons 1

    你试试这个可以吗

    .action{ if index . "custom-avs" }
    .action{ $id := .id }
    .action{ $blocks := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id }
    .action{ $b := first $blocks }
    .action{ $match := regexFind "custom-plugin-task-list-handleAt=\"([0-9]+)\"" $b.IAL }
    .action{ $value := trimPrefix "custom-plugin-task-list-handleAt=\"" $match }
    .action{ $value := trimSuffix "\"" $value }
    .action{ $value }
    .action{ end }
    

    仅保留年月日版

    .action{ if index . "custom-avs" }
    .action{ $id := .id }
    .action{ $blocks := queryBlocks "SELECT * FROM blocks WHERE id = '?'" $id }
    .action{ $b := first $blocks }
    .action{ $match := regexFind "custom-plugin-task-list-handleAt=\"([0-9]+)\"" $b.IAL }
    .action{ $value := trimPrefix "custom-plugin-task-list-handleAt=\"" $match }
    .action{ $value := trimSuffix "\"" $value }
    .action{ $year := substr 0 4 $value }
    .action{ $month := substr 4 6 $value }
    .action{ $day := substr 6 8 $value }
    .action{ $year }-.action{ $month }-.action{ $day }
    .action{ end }
    
    1 操作
    wilsons 在 2024-11-02 20:12:18 更新了该回帖
  • ONIONLYONE

    佬,我刚刚发现 daily note 文档中自定义属性,该值刚好是 20241102 这样的格式,能否把匹配当日日期变成匹配嵌入块所在的 daily note 文档自定义属性值呢,我现在的方案如果查看昨日 daily note 中的嵌入块,显示的也是今天的任务。另外,如果要加一天,也就是显示明天的任务,有办法实现吗,感谢。

    1 回复
  • wilsons 1

    用这个试试,粘贴到 SQL 查询文本框中即可

    //!js
    return (async () => {
        // sql查询语句
        const sql = `SELECT * FROM blocks WHERE ial LIKE '%custom-plugin-task-list-handleAt="${getCurrDocCustomAttr()}%';`;
    
        // 查询逻辑
        const result = await query(sql);
        if(result.length > 0) {
            return result.map(row=>row.id);
        }
        return [];
    
        // 获取当前文档的自定义属性值
        function getCurrDocCustomAttr() {
            const attributes = Array.from(item.parentElement.attributes);
            const attr = attributes.find(attr=>attr.name.startsWith('custom-dailynote'));
            return attr ? attr.value : '';
        }
    
        // 查询数据库
        async function query(sql) {
            const result = await fetchSyncPost('/api/query/sql', { "stmt": sql });
            if (result.code !== 0) {
                console.error("查询数据库出错", result.msg);
                return [];
            }
            return result.data;
        }
    })();
    
    1 回复
  • ONIONLYONE

    就是我想要的效果,原来这么复杂,我试了几小时放弃了 😂 。感谢大佬。

    另外我想再问下:

    1 如果要显示明天的,就是今天的加一天要怎么改。

    2 查询不到结果可以返回文本“今天没有任务了”,我记得之前自动添加到数据库的那个代码可以返回添加了多少文档,不知道这个可不可以。

    1 回复
  • wilsons 1

    查询明天的可以用这个 SQL

    SELECT * FROM blocks WHERE ial LIKE '%custom-plugin-task-list-handleAt="' || strftime('%Y%m%d', datetime('now', '+1 days')) || '%';
    

    自定义返回结果有点复杂,建议使用思源自带的"不存在符合条件的内容块"提示即可。

    如果有兴趣研究,可参考 建议增加“将文内所有 x 级标题转化为 x 级标题” - wilsons 的回帖

    1 回复
  • ONIONLYONE

    好的好的,太感谢大佬了 ORZ

  • YRJ0422

    听起来你可以使用集市里面的极简 TODO 模版

    1 回复
  • ONIONLYONE

    感谢推荐,我也有看过那个模板的介绍,但是那个模板是每日的日程是写在 daily note 里面的吧?我的日程是写在其他笔记里,在 daily note 里面汇总,有关还是不一样。

    1 回复
  • YRJ0422

    一样可以汇总,需要配合快速添加属性插件,不过我技术有限,除了模版生成的,其他地方手动添加的块属性都保持一致一个时间值,也可以手动加属性不用插件就是麻烦点

    1 回复
  • ONIONLYONE

    刚刚试了下。改了下极简 todo 的模板也实现了功能,我是配合任务列表这个插件使用的。

    1 回复
    2 操作
    ONIONLYONE 在 2024-11-05 17:38:54 更新了该回帖
    ONIONLYONE 在 2024-11-05 16:15:12 更新了该回帖
  • YRJ0422 1

    参考我这个使用方法,也挺方便的

  • lssw1001

    感谢一下大佬,我就是通过您这两个链接提供的代码实现了自动索引当日未完成任务,以及改了一下日期格式。

    QAQ 我之前还每天手动复制,我以前真是笨的可以 🙏

请输入回帖内容 ...

推荐标签 标签

  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    222 引用 • 474 回帖
  • 又拍云

    又拍云是国内领先的 CDN 服务提供商,国家工信部认证通过的“可信云”,乌云众测平台认证的“安全云”,为移动时代的创业者提供新一代的 CDN 加速服务。

    21 引用 • 37 回帖 • 547 关注
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 226 关注
  • JavaScript

    JavaScript 一种动态类型、弱类型、基于原型的直译式脚本语言,内置支持类型。它的解释器被称为 JavaScript 引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在 HTML 网页上使用,用来给 HTML 网页增加动态功能。

    730 引用 • 1328 回帖 • 1 关注
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 533 关注
  • 宕机

    宕机,多指一些网站、游戏、网络应用等服务器一种区别于正常运行的状态,也叫“Down 机”、“当机”或“死机”。宕机状态不仅仅是指服务器“挂掉了”、“死机了”状态,也包括服务器假死、停用、关闭等一些原因而导致出现的不能够正常运行的状态。

    13 引用 • 82 回帖 • 62 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖 • 2 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    570 引用 • 3533 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • H2

    H2 是一个开源的嵌入式数据库引擎,采用 Java 语言编写,不受平台的限制,同时 H2 提供了一个十分方便的 web 控制台用于操作和管理数据库内容。H2 还提供兼容模式,可以兼容一些主流的数据库,因此采用 H2 作为开发期的数据库非常方便。

    11 引用 • 54 回帖 • 656 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖 • 6 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 15 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 629 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    190 引用 • 1057 回帖 • 1 关注
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    86 引用 • 122 回帖 • 625 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    27 引用 • 225 回帖 • 173 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    16 引用 • 124 回帖 • 1 关注
  • JetBrains

    JetBrains 是一家捷克的软件开发公司,该公司位于捷克的布拉格,并在俄国的圣彼得堡及美国麻州波士顿都设有办公室,该公司最为人所熟知的产品是 Java 编程语言开发撰写时所用的集成开发环境:IntelliJ IDEA

    18 引用 • 54 回帖 • 3 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 5 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 473 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    312 引用 • 546 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    53 引用 • 37 回帖
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    166 引用 • 595 回帖
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 671 关注