I am using a dataview query to pull pages created and updated today. This goes in my daily note for that day. This is what the current code looks like:
LIST WHERE file.cday = date(today)
What I’m trying to do
Not surprisingly that updates every daily note with those pages for the current date. What I want it to do is to hold the date. For example, the daily note for 2022-07-14 would show only notes created on that date. If I were to look back at 2022-07-13 I would want it show only pages created or modified on the 13th. Is there a way to do this without manually adjusting the date every day?
Thanks for the clear explanation! You have a couple options. Per the dataview docs, if your daily notes have titles that include the date “of form yyyy-mm-dd or yyyymmdd” or you have a frontmatter or inline-field with the date then the daily note will have an implicit field called file.day. So inside that daily note you could say LIST WHERE file.cday = this.file.day to compare everything to that daily note’s day rather than “today”.
Thanks for this. The only problem I run into with this is sometimes the creation date of a daily note precedes the actual date. For example, I may link a task to a day in the future or make a note for a meeting in the future.
Good point! Luckily, file.day and file.cday can be totally different dates. Does the title of the daily note have the date in it? (in yyyy-mm-dd or yyyymmdd format)? If so, what does this test query inside such a future note LIST this.file.day FROM "theActualTitleOfThisFutureDailyNote" give you? I would hope it would print the title of the note as a link and then the date corresponding to the note. Does that then work as a replacement for date(today)? Or am I missing something?
Here is mine from my Daily Note. This doesn’t solve your problem of creating a daily note before the actual day. Then again, my use case wouldn’t really allow that.
### Notes Modified / Created Today
TABLE file.mtime as "Modified"
WHERE file.mday = this.file.day
SORT file.mtime DESC
### Notes Modified / Created in last 7 days
TABLE file.mtime as "Modified", file.ctime as "Created"
WHERE file.mtime >= (this.file.ctime - dur(7 d))
SORT file.ctime DESC
EDIT: Aha I figured it out! Sorry that I forgot this in my prior post. If you are using a filename in your FROM, it needs to be the full path of the file within the vault, not just the name. So for example my daily notes live inside a folder called “days” inside the root of my vault, so inside my “2022-07-19” note, my query needed to be LIST this.file.day FROM "days/2022-07-19". Hopefully you should get a result now!
Huh! I am surprised and confused! It worked for me. Are we on the same version of dataview? I’ll check mine for updates (Settings → Community Plugins → button that says “Check for Updates” then “Update”, then close and re-open Obsidian if there were any updates that got installed).
Thanks for sharing your file title! Since the title is just a date, maybe for a query inside that file you can use date(this.file.name). Have not tested this one yet, will edit this post after I check for updates and test.
EDIT: date(this.file.name) should also work from inside that file. Here’s a table I just made to test, both columns looked the same to me. Note you’ll have to replace the FROM with whatever the path to your note is.
this.file.day AS "day",
date(this.file.name) AS "name"