How to Include Date Ranges in Dataview Queries in Obsidian
Dataview is a powerful tool for working with your notes in Obsidian, allowing you to query and manipulate your data in a flexible and efficient way. One of the most common requirements is to filter data based on dates, and in this article, we'll explore how to include date ranges in your Dataview queries.
Understanding Date Fields in Dataview
Dataview uses the YAML frontmatter of your notes to access date information. To include a date in your notes, you need to create a YAML frontmatter entry with a specific key and assign it a date value. For instance:
---
date: 2023-09-28
---
This code snippet creates a "date" field in your note's frontmatter and assigns it the date "2023-09-28". You can use different keys for your date field, as long as you consistently use the same key for all your notes.
Filtering Notes Within a Date Range
To filter notes within a specific date range, you can use Dataview's built-in date functions. Here's how:
1. Using the date
Function:
The date
function allows you to filter notes based on the date field in your frontmatter. Here's an example:
LIST
WHERE date >= 2023-09-01 AND date <= 2023-09-30
This query will list all notes where the "date" field falls between September 1st and September 30th, 2023.
2. Using the between
Function:
The between
function provides a more concise way to define date ranges. Here's how you can rewrite the previous query using between
:
LIST
WHERE date BETWEEN 2023-09-01 AND 2023-09-30
3. Using the start
and end
Properties:
You can use start
and end
properties for more complex date range filtering. Let's assume you have a field called "eventDate" in your frontmatter. You can filter based on the event duration like this:
LIST
WHERE eventDate.start >= 2023-09-01 AND eventDate.end <= 2023-09-30
This query will list all notes where the "eventDate" falls completely within the range of September 1st and September 30th, 2023.
Tips for Working with Date Ranges in Dataview:
- Date Formats: Dataview uses the ISO 8601 date format (YYYY-MM-DD). Ensure your date values in the frontmatter adhere to this format.
- Combining Date Range Filters: You can combine different date range filters to create more complex queries. For example, you could filter notes based on a date range and a specific tag.
- Customizing Date Ranges: Use relative date ranges by combining the
date
function with operators like<
,>
,<=
, and>=
. For example,date < 2023-10-01
will select notes with a date before October 1st, 2023.
Examples of Practical Applications:
-
Listing Notes for a Specific Month:
LIST WHERE date >= 2023-10-01 AND date < 2023-11-01
-
Finding Projects with Deadlines in the Next Week:
LIST WHERE deadline >= date(now) AND deadline <= date(now + 7 days)
-
Listing All Notes Created in the Past Year:
LIST WHERE date >= date(now - 1 year) AND date <= date(now)
Conclusion
Including date ranges in your Dataview queries provides a powerful way to organize and filter your notes based on time. Mastering these techniques allows you to unlock new levels of efficiency and insights from your Obsidian notes.