JQL for overdue work and due dates
Short answer
Overdue work is anything with a due date before now that is not done:
duedate < now() AND statusCategory != Done ORDER BY duedate ASC
due is an accepted short name for the same field, so due < startOfDay() AND resolution = Unresolved also works.
Queries you can paste
| You want | JQL |
|---|---|
| Overdue, oldest first | duedate < now() AND statusCategory != Done ORDER BY duedate ASC |
| Due in the next 7 days, not yet overdue | duedate <= 7d AND duedate >= now() AND statusCategory != Done |
| Due this week | duedate >= startOfWeek() AND duedate <= endOfWeek() |
| Due this month | duedate < startOfMonth(1) AND duedate >= startOfMonth() |
| Overdue by more than a week | duedate < -1w |
| Due after a fixed date | duedate > "2026-10-01" |
| Open work with no due date | duedate is EMPTY AND statusCategory != Done |
duedate <= 7d on its own also matches dates in the past, so it includes overdue work. Add AND duedate >= now() when you only want upcoming work. Add AND statusCategory != Done to the fixed-date and -1w queries if you only want open work.
What JQL cannot do with due dates
- Compare two fields. "Resolved after its due date" is not searchable:
statusCategory = Done AND resolved > duedatefails with "Date value 'duedate' for field 'resolved' is invalid." JQL compares a field to a value or function, never to another field. - Due date history.
duedate changedfails with "History searches do not support the 'duedate' field." You cannot find work whose due date was pushed back.
For either one you need a stored field. You can maintain one with an Automation rule that writes a flag when the work item is resolved or its due date is edited, which uses rule runs. Due Date Fields for Jira (ours) keeps five read-only fields current instead: Resolved late, Days late at resolution, Due date change count, Original due date and Due date slip (days). With it installed, each query below parses on a Jira Cloud site:
"Resolved late" = "yes" AND statusCategory = Done AND updated >= startOfMonth()
"Days late at resolution" > 3
"Due date change count" >= 2
"Due date slip (days)" > 7