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

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

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

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

  • 思源笔记

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

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

    25850 引用 • 107038 回帖 • 1 关注
  • Q&A

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

    9924 引用 • 45065 回帖 • 79 关注

相关帖子

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

    .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}

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • White-Night-Dream via Android

    试试浮点函数(divf)

    1 回复
  • 其他回帖
  • Liuzn 1
    .action{$endTime := index . "结束日期"}

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

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

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

    1 回复
  • 试试这个,有用请采纳:

    .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}
    1 回复
  • museum via macOS

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

    好像不行哦

  • 查看全部回帖

推荐标签 标签

  • 爬虫

    网络爬虫(Spider、Crawler),是一种按照一定的规则,自动地抓取万维网信息的程序。

    106 引用 • 275 回帖
  • webpack

    webpack 是一个用于前端开发的模块加载器和打包工具,它能把各种资源,例如 JS、CSS(less/sass)、图片等都作为模块来使用和处理。

    42 引用 • 130 回帖 • 250 关注
  • jQuery

    jQuery 是一套跨浏览器的 JavaScript 库,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在 2006 年 1 月的 BarCamp NYC 上释出第一个版本。全球约有 28% 的网站使用 jQuery,是非常受欢迎的 JavaScript 库。

    63 引用 • 134 回帖 • 734 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    32 引用 • 108 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    554 引用 • 675 回帖
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 16 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 2 关注
  • Laravel

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

    19 引用 • 23 回帖 • 740 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖
  • Android

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

    336 引用 • 324 回帖
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 385 关注
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 183 关注
  • 宕机

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

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

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

    58 引用 • 22 回帖 • 12 关注
  • 安装

    你若安好,便是晴天。

    132 引用 • 1184 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    954 引用 • 944 回帖
  • Sublime

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

    10 引用 • 5 回帖 • 1 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 639 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 537 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 765 关注
  • flomo

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

    6 引用 • 143 回帖 • 2 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 3 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    201 引用 • 120 回帖
  • TextBundle

    TextBundle 文件格式旨在应用程序之间交换 Markdown 或 Fountain 之类的纯文本文件时,提供更无缝的用户体验。

    1 引用 • 2 回帖 • 83 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 6 关注