I have read the guidance on how to search entries using both simple and advanced syntax. However, it currently does not support filtering entries by date—specifically, entries earlier than the date recorded in the timestamp field.
Therefore, I would like to request support for date-based range queries on time-based fields such as timestamp, creationdate, and modificationdate.
For example, allow users to find entries recorded between 2020-08-01 to 2025-07-03.
. Then just scroll down to the start date you are looking for and select all the entries until you reach the end date. You then can add those selected entries to a group, in case you need them again later.
Option 2: Regex (not advised)
It is possible to find a daterange with a regex pattern, but it is very very tricky to take leap years and months into account that vary in the number of days (e.g. September 30 days, July 31 days). RegEx is supported in JabRef’s searchbar and also in the groups feature. Keep in mind that there are different regex engines and JabRef supports one that is based on JavaRegEx. I wouldn’t advise to use RegEx, because it’s time consuming to come up with the regex, everytime you want to search for a different date range.
Date filtering is a very common need and would be a useful enhancement (user opinion, not a maintainer).
I use options 1 and 2, sometimes together. Option 1 only works if you have timestamp, creationdate, and modificationdate showing in the entry table. You can enable these columns in preferences, if you have not already.
Regarding option 2, it’s true that filtering by day and month can get pretty complicated. However, filtering by year is easier and often useful without being precise.
In case you are unfamiliar,
\d means any digit.
\d+ means one or more digits.
[0-9] means any digit from 0 through 9
[012379] means 0, 1, 2, 3, 7, or 9
Here is a basic pattern for all the years in each decade.
199[0-9]
200[0-9]
201[0-9]
202[0-9]
Adjust the range to search within a decade.
2021 through 2024: timestamp=~202[1-4]
Combine with | (“or”) to make a multi-decade range.
2015 through 2025: timestamp=~201[5-9]|202[0-5]
2005 through 2025: timestamp=~200[5-9]|201[0-9]|202[0-5]
Note: These examples are designed for easy composition, not necessarily for performance (processing efficiency). That is, you can easily adjust the range of each decade without rearranging anything else, unlike in this example, which gives the same results as the last one above: timestamp=~20\(\([01][5-9]\)|\([12][0-4]\)|\(25\)\)
Searching with =~ enables regex searches of the specified field. In this case, the regex button does not need to be activated (See Searching within years - #5 by horror-vacui)