Hi everyone. So I was creating a bookshelf in Obsidian and was wondering if it’s possible for Dataview to auto-push recently updated works to the top of a table? By that I mean I have a “frequency” property and a “updated” property. So for example work A has an update “frequency” of 7 (days) and was last “updated” on 8th of May 2025. So I was thinking of like making Dataview or Obsidian check in with the system’s date (OK so today’s 15th of May, which is 7 days since the 8th) and if it’s the day the work is supposed to have a new chapter → the work automatically get pushed to the top of Dataview.
Honestly I haven’t tried much besides putting in the properties because I’m a bit clueless as to what to do. Probably will require some sorts of coding? for Obsidian or Dataview to check in with the OS date? Or alternatively I am thinking of a setup where I have to manually type in today’s date for Dataview to refresh and push all the recently updated works to the top.
It sounds like simply sorting by your updated property might be all you need. To see your most recent updates up top, use a line like this in your Dataview query:
SORT updated DESC
By default, every time you open your bookshelf note, you’ll get refreshed results. And periodically while the note is opened (that is, for your Dataview queries that are in a code block, but not necessarily for inline DQL). I don’t know the rate, but it’s usually within a few seconds of any changes. There’s also a “Dataview: Force refresh all views and blocks” command in the Command Palette (CTRL + P to bring it up).
You can see for yourself with a quick test. Paste this query:
```dataview
LIST WITHOUT ID test
WHERE file.name = this.file.name
```
… Now create a property called test and type in a value. Watch a few moments until you see the results update. Change the value, watch, see again.
What I was I trying to do is to sort by future “updated” property, which is calculated by say last “updated” date + “frequency” (May 8th + 7 days = 15th May). If today were 13th May then the item doesn’t get pushed to the top yet, if today were 15 May it get pushed to the top since it has been 7 days since the work was last updated and 15th May is when it’s supposed to have a new chapter—basically I want Dataview to remind me that this work might have just updated recently so I should check it out.
Alternatively: maybe something like auto-generated/auto-updating frontmatter/property? So for example every time work A is stored in note A. Work A has an update interval of 7 days so I give note A a “frequency” property of 7. So what I wanna do is that I want the “frequency” property to automatically tick down day by day until it hits 0 and then it just stops. If I then modify work A in anyways (for example: I change the last “updated” property or add a new book cover) then the “frequency” property would revert back to 7 and start ticking down all over again.
```dataview
TABLE date(today) - updated AS Countdown
FROM "webnovels"
WHERE updated <= date(today)
The thing is that in the original post, they used the same deadline for everything whereas the last "updated" property of every note is different so I am a bit stuck on that.
Yeah, I would definitely suggest a table like that over the countdown idea.
The equivalent of that table for your variable frequency would be this:
```dataview
TABLE WITHOUT ID file.link AS work, updated + frequency AS "planned update"
FROM "your/folder/path"
WHERE dur(frequency) AND (updated + frequency <= date(today))
```
(Change your/folder/path to your folder’s path.)
You might already know, but just making sure: Use valid natural language for your frequency, such as “2 days” or “3 months”. (Explained here).
(edit to add…)
And if you wanted to see all your works in order of when the next update is, then you could do something like this:
```dataview
TABLE WITHOUT ID file.link AS work,
updated,
frequency,
updated + frequency AS "planned update"
FROM "bookshelf-folder"
WHERE dur(frequency)
SORT updated + frequency ASC
```
Just wanted to put this second table here to hopefully make it easier for you to think about your options and adjust it how you want.
Thanks for the help! I tried your second table and it is almost there, the only part that went awry is the:
updated + frequency AS "planned update"
I tried it with a test note and it was displayed as 2025.05.081week instead of 2025.05.15. I typed the frequency as 7 days and somehow it got auto-converted to 1 week. I think maybe using sum might help.
Oh wait, it’s probably your date format! I’m so used to seeing it both ways that I ignored the difference. I’ll type it up a fix… gimme a sec
Edit:
Here are the two tables with your dot date format. Do they work for you?
```dataview
TABLE WITHOUT ID file.link AS work,
updated,
frequency,
date(updated, "yyyy.MM.dd") + dur(frequency) AS "planned update"
FROM "bookshelf-folder"
WHERE dur(frequency)
SORT date(updated, "yyyy.MM.dd") + frequency ASC
```
```dataview
TABLE WITHOUT ID file.link AS work, date(updated, "yyyy.MM.dd") + frequency AS "planned update"
FROM "bookshelf-folder"
WHERE dur(frequency) AND (date(updated, "yyyy.MM.dd") + frequency <= date(today))
```
Oh wait, it’s probably your date format! I’m so used to seeing it both ways that I ignored the difference. I’ll type it up a fix… gimme a sec
I was gonna say lmao. I noticed your different date format and changed it to yours and it worked. The first table with the dot date format also worked while the second table had the same 2025.05.081 week syndrome. I only need the first table for now though thanks for your help nonetheless. I really appreciate it <3.