v3.0.9 数据库获取列数据的问题

本贴最后更新于 352 天前,其中的信息可能已经时移俗易

image.png

如上图,设计了一个简单的阅读耗时统计。但是在获取列数据的时候,如果该列没有数据,变量就会失效。也就说无法将变量提升(需要重复定义)。不确定是我代码写的不对还是笔记的 bug
以下是我的代码:

.action{$readState := index .状态} .action{$today := (now | date "2006-01-02")} .action{$nowdate :=(toDate "2006-01-02" $today)} .action{if eq $readState "想读"} 🟡未读 .action{else if eq $readState "在读"} .action{$deadline := index .截止日期} .action{$delta :=(div ($nowdate.Sub $deadline).Hours 24)} .action{if lt $delta 0} .action{$startTime := index .开始日期} .action{$current :=(div ($nowdate.Sub $startTime).Hours 24)} .action{$current} 天 .action{else} 🔴超时.action{$delta} 天 .action{end} .action{else} .action{$startTime := index .开始日期} .action{$endTime := index .结束日期} .action{$delta :=(div ($endTime.Sub $startTime).Hours 24)} .action{$delta} 天 .action{end}

可以看到需要重复定义 $startTime 等变量,如果在最外面定义 $startTime,$endTime 等变量,如果该变量未设定值,则会无法正常显示耗时,如下:

.action{$readState := index .状态} .action{$today := (now | date "2006-01-02")} .action{$nowdate :=(toDate "2006-01-02" $today)} .action{$startTime := index .开始日期} .action{$endTime := index .结束日期} .action{$deadline := index .截止日期} .action{if eq $readState "想读"} 🟡未读 .action{else if eq $readState "在读"} .action{$delta :=(div ($nowdate.Sub $deadline).Hours 24)} .action{if lt $delta 0} .action{$startTime := index .开始日期} .action{$current :=(div ($nowdate.Sub $startTime).Hours 24)} .action{$current} 天 .action{else} 🔴超时.action{$delta} 天 .action{end} .action{else} .action{$delta :=(div ($endTime.Sub $startTime).Hours 24)} .action{$delta} 天 .action{end}

image.png

希望有大佬可以解惑,可能是我对语法不够熟悉。

  • 思源笔记

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

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

    24809 引用 • 102060 回帖
  • Q&A

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

    9409 引用 • 42877 回帖 • 109 关注

相关帖子

被采纳的回答
  • 试试这个,有用请采纳:

    .action{$readState := index . "状态"} .action{if eq $readState "想读"} 🟡未读 .action{else} .action{$endTime := index . "结束日期"} .action{if empty $endTime}.action{/* 如果结束日期为空 */} .action{$nowdate := (now | date "2006-01-02")}.action{/* 当前日期 */} .action{$nowdate = toDate "2006-01-02" $nowdate | date "2006-01-02"} .action{$deadline := (index . "截止日期" | date "2006-01-02")} .action{$deadline = toDate "2006-01-02" $deadline | date "2006-01-02"} .action{if le $nowdate $deadline}.action{/* 如果当前日期小于截止日期,就计算开始日期到当前日期 */} .action{$nowdate := (now | date "2006-01-02")} .action{$nowdate = toDate "2006-01-02" $nowdate} .action{$startTime := (index . "开始日期" | date "2006-01-02")} .action{$startTime = toDate "2006-01-02" $startTime} .action{$current :=(div ($nowdate.Sub $startTime).Hours 24)} .action{$current} 天 .action{else if gt $nowdate $deadline}.action{/* 如果当前日期大于等于截止日期,就计算超时 */} .action{$nowdate := (now | date "2006-01-02")} .action{$nowdate = toDate "2006-01-02" $nowdate} .action{$deadline := (index . "截止日期" | date "2006-01-02")} .action{$deadline = toDate "2006-01-02" $deadline} .action{$delta :=(div ($nowdate.Sub $deadline).Hours 24)} 🔴超时 .action{$delta} 天 .action{end} .action{else}.action{/* 如果有结束日期,就计算开始日期到结束日期 */} .action{$endTime := (index . "结束日期" | date "2006-01-02")} .action{$endTime = toDate "2006-01-02" $endTime} .action{$startTime := (index . "开始日期" | date "2006-01-02")} .action{$startTime = toDate "2006-01-02" $startTime} .action{$current :=(div ($endTime.Sub $startTime).Hours 24)} .action{$current} 天 .action{end} .action{end}

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • 做了第二版,不需要[状态]单选列:

    image.png

    .action{/* 第二版,不需要[状态]单选列 */} .action{ $deadline := index . "截止日期" } .action{ $start := index . "开始日期" } .action{ $end := index . "结束日期" } .action{ if $end } .action{ if $start } 总共 .action{ div ($end.Sub $start).Hours 24 } 天 .action{ else } 无计数 .action{ end } .action{ else } .action{ $now := now } .action{ $nowStr := toString $now } .action{ if $deadline } .action{ $deadlineStr := toString $deadline } .action{ if gt $nowStr $deadlineStr } 逾期 .action{ div ($now.Sub $deadline).Hours 24 } 天 .action{ else } .action{ if $start } 已读 .action{ div ($now.Sub $start).Hours 24 } 天 , .action{ end } 剩余 .action{ div ($deadline.Sub $now).Hours 24 } 天 .action{ end } .action{ else } .action{ if $start } .action{ $startStr := toString $start } .action{ if gt $nowStr $startStr } 已读 .action{ div ($now.Sub $start).Hours 24 } 天 .action{ else } 未开始 .action{ end } .action{ else } 待定 .action{ end } .action{ end } .action{ end }
    逻辑: 如果有结束日期 如果有开始日期 → 计算开始日期到结束日期 → 总共 N 天 如果没有开始日期 → 无计数 如果没有结束日期 如果有截止日期 如果当前日期大于截止日期 → 计算截止日期到当前日期 → 逾期 N 天 否则 如果有开始日期 计算开始日期到当前日期, → 已读 N 天, 计算当前日期到截止日期 → 剩余 N 天 如果没有截止日期 如果有开始日期 如果当前日期大于开始日期 计算开始日期到当前日期 → 已读 N 天 否则 未开始 如果没有开始日期 待定
    1 回复
    2 操作
    JeffreyChen 在 2024-05-15 19:26:06 更新了该回帖
    JeffreyChen 在 2024-05-15 19:24:39 更新了该回帖
  • 其他回帖
  • museum via macOS

    这样子嘛
    .action{$delta :=(divf ($endTime.Sub $startTime).Hours 24)}

    好像不行哦

  • museum via macOS

    谢谢!

  • Liuzn 1
    .action{$endTime := index . "结束日期"}

    应该用这个,注意 . 前后都有空格,这样写在最前面也是没问题的。

    其他应该没问题,当然最好都统一改一下

    还有就是状态一栏其实也可以用模板列,根据日期自动显示状态

    1 回复
  • 查看全部回帖

推荐标签 标签

  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    335 引用 • 324 回帖
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    20 引用 • 23 回帖 • 737 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 53 关注
  • NGINX

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

    315 引用 • 547 回帖
  • Anytype
    3 引用 • 31 回帖 • 12 关注
  • Windows

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

    226 引用 • 476 回帖 • 2 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 702 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 6 关注
  • 职场

    找到自己的位置,萌新烦恼少。

    127 引用 • 1708 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 140 回帖
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Q&A

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

    9409 引用 • 42877 回帖 • 110 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 2 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 1 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3455 回帖 • 165 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖 • 2 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 431 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 6 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    267 引用 • 666 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    132 引用 • 796 回帖
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 567 关注
  • Outlook
    1 引用 • 5 回帖
  • Excel
    31 引用 • 28 回帖
  • WordPress

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

    66 引用 • 114 回帖 • 200 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 637 关注