请问如何让dataview使用yaml区的时间进行检索呢

原来我是直接使用dataview自带的元信息进行检索,后来发现同步有时候会更改文件的元信息,所以我现在就把文件的创建时间和更新时间写在yaml区了,只是这样,我才疏学浅,改不来dv的代码,特来求助

我以前正常使用的,使用dv元信息的,检索一周内有过更新的文件的代码如下

Table without id file.link as 一周内有过更新的文件列表,file.mtime as 更新时间降序
From ""
WHERE  file.mtime  >= date(today) - dur(7 day) 
Sort file.mtime desc

我在yaml区写的时间信息如下
created: 2022-12-26 19:06:48 星期一晚上
modified: 2022-12-26 20:21:08 星期一晚上

我现在想把dataview的通过file.mtime元信息检索的方式,转成使用yaml区的modified键值来进行检索。我尝试使用了where contains的方式,但是因为modified后面的时间是不断变动的,所以失败了 :joy:
还请诸位大神不吝赐教

file.mtime是文件属性里的修改时间, 不是yaml里的键值

是的,可能是我没写清楚。我上面贴的那个dv代码,是现在可以正常使用的,使用dv元信息的代码
但是我现在想把它转成使用yaml里的键值,但是不知道应该如何更改才行 :sob:

把file.mtime换成你自己的值modified不就行拉?

感谢,我试着换了,但是时间上不对了,使用元信息的时候就是7天准的,换成yaml区的键值之后,就变成所有时间都包含了,不止是7天了。我甚至把一个文件的modified改成了2021年,居然还是出现在了dataview的结果下面 :rofl:

我修改之后的dv代码如下

Table without id file.link as 一周内更新过的文件列表,modified as 更新时间降序
From ""
WHERE  modified  >= date(today) - dur(7 day) 
Sort modified desc

大佬看看是不是哪里改错了?

应该是时间格式问题, 要不你把yaml全部改成标准的格式, 或者直接改用js, 用js的moment把modified格式化就行了

有同样问题。
是打算做一个显示未来一周节日的表格,按照上面的代码试了下,写成这样算是能用了:

WHERE 日期 <= date(today) + dur(7 day) and 日期 >= date(today)

yaml中的值是字符串,date()出来的是moment时间对象,需要用转换函数

我也有这个问题,想用dataview筛选YAML里日期为今年的笔记,但用了上述的语法没成功

请问转换函数是什么呢?找了很多文档没找到 :pray:

刚才去英文社区找到了解决方法

我的YAML模版为

- 书名 ::
- 作者 ::
- 分类 ::
- 出版社 ::
- 阅读方式 ::
- 开始时间 :: YYYY-MM-DD
- 结束时间 :: YYYY-MM-DD

目的:用dataview查询出2022年至今的读书摘录,最终生效的代码为:

dataview
table 作者,分类,阅读方式,结束时间
from "读书摘录"
where 结束时间 <= date(today) and 结束时间 >= date(2022-01-01)
sort 结束时间

希望对你有帮助

1 个赞

我也遇到了相似的问题。一开始是筛选大于某个日期的时间,显示筛选结果为零,但是明明有符合条件的记录。后来看了你的帖子,我把date(“2022-01-01”)里的引号去掉了,就成功了。问了半天newbing,最后还是在这个论坛解决的问题。 :laughing:
谢谢层主分享。