Advanced Searching Functions

The instructions on this page describe how to use fuctions in JQL to define structured search queries to search for JIRA issues. Your search results will be displayed in the Issue Navigator, where you can export them to MS Excel and many other formats. You can also save and subscribe to your advanced searches if you wish.

When you perform an advanced search, you are using the JIRA Query Language (JQL).

Functions Reference

A function in JQL appears as a word followed by parentheses which may contain one or more explicit values or JIRA fields. In a clause, a function is preceded by an operator, which in turn is preceded by a field. A function performs a calculation on either specific JIRA data or the function's content in parentheses, such that only true results are retrieved by the function and then again by the clause in which the function is used.

This document also covers the reserved characters and words that JIRA uses.

List of Functions

cascadeOption()

Search for issues that match the selected values of a 'cascading select' custom field.

The parentOption parameter matches against the first tier of options in the cascading select field. The childOption parameter matches against the second tier of options in the cascading select field, and is optional.

The keyword "none" can be used to search for issues where either or both of the options have no value.

Syntax
cascadeOption(parentOption)

or

cascadeOption(parentOption,childOption)
Supported Fields
  • custom fields of type 'Cascading Select'
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues where a custom field ("Location") has the value "USA" for the first tier and "New York" for the second tier:

    location in cascadeOption("USA","New York")
  • Find issues where a custom field ("Location") has the value "USA" for the first tier and any value (or no value) for the second tier:

    location in cascadeOption("USA")
  • Find issues where a custom field ("Location") has the value "USA" for the first tier and no value for the second tier:

    location in cascadeOption("USA",none)
  • Find issues where a custom field ("Location") has no value for the first tier and no value for the second tier:

    location in cascadeOption(none)
  • Find issues where a custom field ("Referrer") has the value "none" for the first tier and "none" for the second tier:

    referrer in cascadeOption("\"none\"","\"none\"")
  • Find issues where a custom field ("Referrer") has the value "none" for the first tier and no value for the second tier:

    referrer in cascadeOption("\"none\"",none)

^top of functions | ^^top of topic

closedSprints()

(info) Only available if you are using JIRA Agile 6.7.

Search for issues that are assigned to a completed Sprint. (Note that it is possible for an issue to belong to both a completed Sprint(s) and an incomplete Sprint(s).)

See also openSprints().

Syntax
closedSprints()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)

Examples
  • Find all issues that are assigned to a completed Sprint.

    sprint in closedSprints()

^top of functions | ^^top of topic

componentsLeadByUser()

Find issues in components that are lead by a specific user.

You can optionally specify a user, or if the user is omitted the current user (i.e. you) will be used.

Note that if you are not logged in to JIRA, a user must be specified.

Syntax
componentsLeadByUser()

or

componentsLeadByUser(username)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find open issues in components that are lead by you:

    component in componentsLeadByUser() AND status = Open
  • Find open issues in components that are lead by Bill:

    component in componentsLeadByUser(bill) AND status = Open

^top of functions | ^^top of topic

currentLogin()

Perform searches based on the time at which the current user's session began. See also lastLogin.

Syntax
currentLogin()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues that have been created during my current session:

    created > currentLogin()

^top of functions | ^^top of topic

currentUser()

Perform searches based on the currently logged-in user.

Note that this function can only be used by logged-in users. So if you are creating a saved filter that you expect to be used by anonymous users, do not use this function.

Syntax
currentUser()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that are assigned to me:

    assignee = currentUser()
  • Find issues that were reported to me but are not assigned to me:

    reporter = currentUser() and assignee != currentUser()

^top of functions | ^^top of topic

earliestUnreleasedVersion()

Perform searches based on the earliest unreleased version (i.e. next version that is due to be released) of a specified project. See also unreleasedVersions.

Note that the "earliest" is determined by the ordering assigned to the versions, not by actual Version Due Dates.

Syntax
earliestUnreleasedVersion(project)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues whose FixVersion is the earliest unreleased version of the ABC project:

    fixVersion = earliestUnreleasedVersion(ABC)
  • Find issues that relate to the earlist unreleased version of the ABC project:

    affectedVersion = earliestUnreleasedVersion(ABC) or fixVersion = earliestUnreleasedVersion(ABC)

^top of functions | ^^top of topic

endOfDay()

Perform searches based on the end of the current day. See also endOfWeek, endOfMonth and endOfYear; and startOfDay, startOfWeek, startOfMonth and startOfYear.

Syntax
endOfDay()

or

endOfDay("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. endOfDay("+1") is the same as endOfDay("+1d").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues due by the end of today:

    due < endOfDay()
  • Find issues due by the end of tomorrow:

    due < endOfDay("+1")

^top of functions | ^^top of topic

endOfMonth()

Perform searches based on the end of the current month. See also endOfDay, endOfWeek and endOfYear; and startOfDay, startOfWeek, startOfMonth and startOfYear.

Syntax
endOfMonth()

or

endOfMonth("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. endOfMonth("+1") is the same as endOfMonth("+1M").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues due by the end of this month:

    due < endOfMonth()
  • Find issues due by the end of next month:

    due endOfMonth("+1")
  • Find issues due by the 15th of next month:

    due endOfMonth("+15d")

^top of functions | ^^top of topic

endOfWeek()

Perform searches based on the end of the current week. See also endOfDay, endOfMonth and endOfYear; and startOfDay, startOfWeek, startOfMonth and startOfYear.

For the endOfWeek() function the result depends upon your locale. For example, in Europe the first day of the week is generally considered to be Monday, while in the USA it is considered to be Sunday.

Syntax
endOfWeek()

or

endOfWeek("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. endOfWeek("+1") is the same as endofWeek("+1w").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues due by the end of this week:

    due < endOfWeek()
  • Find issues due by the end of next week:

    due < endOfWeek("+1")

^top of functions | ^^top of topic

endOfYear()

Perform searches based on the end of the current year. See also startOfDay, startOfWeek and startOfMonth; and endOfDay, endOfWeek, endOfMonth and endOfYear.

endOfYear()

or

endOfYear("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. endOfYear("+1") is the same as endofYear("+1y").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues due by the end of this year:

    due < endOfYear()
  • Find issues due by the end of March next year:

    due < endOfYear("+3M")

^top of functions | ^^top of topic

issueHistory()

Find issues that you have recently viewed, i.e. issues that are in the 'Recent Issues' section of the 'Issues' drop-down menu.

Note:

  • issueHistory() returns up to 50 issues, whereas the 'Recent Issues' drop-down returns only 5.
  • if you are not logged in to JIRA, only issues from your current browser session will be included.
Syntax
issueHistory()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues which I have recently viewed, that are assigned to me:

    issue in issueHistory() AND assignee = currentUser()

^top of functions | ^^top of topic'

issuesWithRemoteLinksByGlobalId()

Perform searches based on issues which are associated with remote links that have any of the specified global ids.

Note:

  • This function accepts 1 to 100 globalIds. Specifying 0 or more than 100 globalIds will result in errors.
Syntax
issuesWithRemoteLinksByGlobalId()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)

Examples
  • Find issues that are linked to remote links that have globalId "abc":

    issue in issuesWithRemoteLinksByGlobalId(abc)
  • Find issues that are linked to remote links that have either globalId "abc" or "def"

    issue in issuesWithRemoteLinksByGlobalId(abc, def)

^top of functions | ^^top of topic

lastLogin()

Perform searches based on the time at which the current user's previous session began. See also currentLogin.

Syntax
lastLogin()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues that have been created during my last session:

    created > lastLogin()

^top of functions | ^^top of topic

latestReleasedVersion()

Perform searches based on the latest released version (i.e. the most recent version that has been released) of a specified project. See also releasedVersions().

Note that the "latest" is determined by the ordering assigned to the versions, not by actual Version Due Dates.

Syntax
latestReleasedVersion(project)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues whose FixVersionis the latest released version of the ABC project:

    fixVersion = latestReleasedVersion(ABC)
  • Find issues that relate to the latest released version of the ABC project:

    affectedVersion = latestReleasedVersion(ABC) or fixVersion = latestReleasedVersion(ABC)

^top of functions | ^^top of topic

linkedIssues()

Perform searches based on issues which are linked to a specified issue.

You can optionally restrict the search to links of a particular type. Note that LinkType is case-sensitive.

Syntax
linkedIssues(issueKey)

or

linkedIssues(issueKey,linkType)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that are linked to a particular issue:

    issue in linkedIssues(ABC-123)
  • Find issues that are linked to a particular issue via a particular type of link:

    issue in linkedIssues(ABC-123,"is duplicated by")

^top of functions | ^^top of topic

membersOf()

Perform searches based on the members of a particular group.

Syntax
membersOf(Group)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues where the Assignee is a member of the group "jira-developers":

    assignee in membersOf("jira-developers")
  • Search through multiple groups and a specific user, e.g:

    reporter in membersOf("jira-developers") or reporter in membersOf("jira-administrators") or reporter=jsmith
  • Search for a particular group, but exclude a particular member or members, e.g.:

    assignee in membersOf(QA) and assignee not in ("John Smith","Jill Jones")
  • Exclude members of a particular group:

    assignee not in membersOf(QA)

^top of functions | ^^top of topic

now()

Perform searches based on the current time.

Syntax
now()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find issues that are overdue:

    duedate < now() and status not in (closed, resolved) 

^top of functions | ^^top of topic

openSprints()

(info) Only available if you are using JIRA Agile 6.7.

Search for issues that are assigned to a Sprint which has not yet been completed. (Note that it is possible for an issue to belong to both a completed Sprint(s) and an incomplete Sprint(s).)

See also closedSprints().

Syntax
openSprints()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)

Examples
  • Find all issues that are assigned to a Sprint which has not yet been completed.

    sprint in openSprints()

^top of functions | ^^top of topic

projectsLeadByUser()

Find issues in projects that are lead by a specific user.

You can optionally specify a user, or if the user is omitted the current user will be used.

Note that if you are not logged in to JIRA, a user must be specified.

Syntax
projectsLeadByUser()

or

projectsLeadByUser(username)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find open issues in projects that are lead by you:

    project in projectsLeadByUser() AND status = Open
  • Find open issues in projects that are lead by Bill:

    project in projectsLeadByUser(bill) AND status = Open

^top of functions | ^^top of topic

projectsWhereUserHasPermission()

Find issues in projects where you have a specific permission.

Note: This function operates at the project level. This means that if a permission (e.g. "Edit Issues") is granted to the reporter of issues in a project, then you may see some issues returned where you are
not the reporter and therefore don't have the permission specified.

Also note that this function is only available if you are logged in to JIRA.

Syntax
projectsWhereUserHasPermission(permission)

For the permission parameter you can specify any of the following:

Project Permissions

Explanation

Administer Projects

Permission to administer a project in JIRA. This includes the ability to edit project role membership, project components, project versions and some project details ('Project Name', 'URL', 'Project Lead', 'Project Description').

Browse Projects

Permission to browse projects, use the Issue Navigator and view individual issues (except issues that have been restricted via Issue Security). Many other permissions are dependent on this permission, e.g. the 'Work On Issues' permission is only effective for users who also have the 'Browse Projects' permission.

View Development Tools

View (Read-Only) Workflow

Permission to view the project's 'read-only' workflow when viewing an issue. This permission provides the 'View Workflow' link against the 'Status' field of the 'View Issue' page.

Issue Permissions

Explanation

Assign Issues

Permission to assign issues to users. Also allows autocompletion of users in the Assign Issue drop-down. (See also Assignable User permission below)

Assignable User

Permission to be assigned issues. (Note that this does not include the ability to assign issues; see Assign Issue permission above).

Close Issues

Permission to close issues. (This permission is useful where, for example, developers resolve issues and testers close them). Also see the Resolve Issues permission.

Create Issues

Permission to create issues in the project. (Note that the Create Attachments permission is required in order to create attachments.) Includes the ability to create sub-tasks (if sub-tasks are enabled).

Delete Issues

Permission to delete issues. Think carefully about which groups or project roles you assign this permission to; usually it will only be given to administrators. Note that deleting an issue will delete all of its comments and attachments, even if the user does not have the Delete Comments or Delete Attachments permissions. However, the Delete Issues permission does not include the ability to delete individual comments or attachments.

Edit Issues

Permission to edit issues (excluding the 'Due Date' field — see the Schedule Issues permission). Includes the ability to convert issues to sub-tasks and vice versa (if sub-tasks are enabled). Note that the Delete Issue permission is required in order to delete issues. The Edit Issue permission is usually given to any groups or project roles who have the Create Issue permission (perhaps the only exception to this is if you give everyone the ability to create issues — it may not be appropriate to give everyone the ability to edit too). Note that all edits are recorded in the Issue Change History for audit purposes.

Link Issues

Permission to link issues together. (Only relevant if Issue Linking is enabled).

Modify Reporter

Permission to modify the 'Reporter' of an issue. This allows a user to create issues 'on behalf of' someone else. This permission should generally only be granted to administrators.

Move Issues

Permission to move issues from one project to another, or from one workflow to another workflow within the same project. Note that a user can only move issues to a project for which they have Create Issue permission.

Resolve Issues

Permission to resolve and reopen issues. This also includes the ability to set the 'Fix For version' field for issues. Also see the Close Issues permission.

Schedule Issues

Permission to schedule an issue — that is, to edit the 'Due Date' of an issue. In older versions of JIRA this also controlled the permission to view the 'Due Date' of an issue.

Set Issue Security

Permission to set the security level on an issue to control who can access the issue. Only relevant if issue security has been enabled.

Transition Issues Permission to transition (change) the status of an issue.

Voters & Watchers Permissions

Explanation

Manage Watcher List

Permission to manage (i.e. view/add/remove users to/from) the watcher list of an issue.

View Voters and Watchers

Permission to view the voter list and watcher list of an issue. Also see the Manage Watcher List permission.

Comments Permissions

Explanation

Add Comments

Permission to add comments to issues. Note that this does not include the ability to edit or delete comments.

Delete All Comments

Permission to delete any comments, regardless of who added them.

Delete Own Comments

Permission to delete comments that were added by the user.

Edit All Comments

Permission to edit any comments, regardless of who added them.

Edit Own Comments

Permission to edit comments that were added by the user.

Attachments Permissions

Explanation

Create Attachments

Permission to attach files to an issue. (Only relevant if attachments are enabled). Note that this does not include the ability to delete attachments.

Delete All Attachments

Permission to delete any attachments, regardless of who added them.

Delete Own Attachments

Permission to delete attachments that were added by the user.

Time Tracking Permissions

Explanation

Work On Issues

Permission to log work against an issue, i.e. create a worklog entry. (Only relevant if Time Tracking is enabled).

Delete All Worklogs

Permission to delete any worklog entries, regardless of who added them. (Only relevant if Time Tracking is enabled). Also see the Work On Issues permission.

Delete Own Worklogs

Permission to delete worklog entries that were added by the user. (Only relevant if Time Tracking is enabled). Also see the Work On Issues permission.

Edit All Worklogs

Permission to edit any worklog entries, regardless of who added them. (Only relevant if Time Tracking is enabled). Also see the Work On Issues permission.

Edit Own Worklogs

Permission to edit worklog entries that were added by the user. (Only relevant if Time Tracking is enabled). Also see the Work On Issues permission.

Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find open issues in projects where you have the "Resolve Issues" permission:

    project in projectsWhereUserHasPermission("Resolve Issues") AND status = Open

^top of functions | ^^top of topic

projectsWhereUserHasRole()

Find issues in projects where you have a specific role.

Note that this function is only available if you are logged in to JIRA.

Syntax
projectsWhereUserHasRole(rolename)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find open issues in projects where you have the "Developers" role:

    project in projectsWhereUserHasRole("Developers") AND status = Open

^top of functions | ^^top of topic

releasedVersions()

Perform searches based on the released versions (i.e. versions that your JIRA administrator has released) of a specified project.

You can also search on the released versions of all projects, by omitting the project parameter.

See also latestReleasedVersion().

Syntax
releasedVersions()

or

releasedVersions(project)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues whose FixVersion is a released version of the ABC project:

    fixVersion in releasedVersions(ABC)
  • Find issues that relate to released versions of the ABC project:

    (affectedVersion in releasedVersions(ABC)) or (fixVersion in releasedVersions(ABC))

^top of functions | ^^top of topic

standardIssueTypes()

Perform searches based on "standard" Issue Types, that is, search for issues which are not sub-tasks.

See also subtaskIssueTypes().

Syntax
standardIssueTypes()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that are not subtasks (i.e. issues whose Issue Type is a standard issue type, not a subtask issue type):

    issuetype in standardIssueTypes()

^top of functions | ^^top of topic

startOfDay()

Perform searches based on the start of the current day. See also startOfWeek, startOfMonth and startOfYear; and endOfDay, endOfWeek, endOfMonth and endOfYear.

Syntax
startOfDay()

or

startOfDay("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. startOfDay("+1") is the same as startofDay("+1d").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find new issues created since the start of today:

    created > startOfDay()
  • Find new issues created since the start of yesterday:

    created > startOfDay("-1")
  • Find new issues created in the last three days:

    created > startOfDay("-3d")

^top of functions | ^^top of topic

startOfMonth()

Perform searches based on the start of the current month. See also startOfDay, startOfWeek and startOfYear; and endOfDay, endOfWeek, endOfMonth and endOfYear.

Syntax
startOfMonth()

or

startOfMonth("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. startOfMonth("+1") is the same as startofMonth("+1M").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find new issues since the start of this month:

    created > startOfMonth()
  • Find new issues since the start of last month:

    created > startOfMonth("-1")
  • Find new issues since the 15th of this month:

    created > startOfMonth("+14d")

^top of functions | ^^top of topic

startOfWeek()

Perform searches based on the start of the current week. See also startOfDay, startOfMonth and startOfYear; and endOfDay, endOfWeek, endOfMonth and endOfYear.

For the startOfWeek() function the result depends upon your locale. For example, in Europe the first day of the week is generally considered to be Monday, while in the USA it is considered to be Sunday.

(info) See Setting Locale in JIRA for more information.

Syntax
startOfWeek()

or

startOfWeek("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. startOfWeek("+1") is the same as startofWeek("+1w").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find new issues since the start of this week:

    created > startOfWeek()
  • Find new issues since the start of last week:

    created > startOfWeek("-1")

^top of functions | ^^top of topic

startOfYear()

Perform searches based on the start of the current year. See also startOfDay, startOfWeek and startOfMonth; and endOfDay, endOfWeek, endOfMonth and endOfYear.

startOfYear()

or

startOfYear("inc")

where inc is an optional increment of (+/-)nn(y|M|w|d|h|m)

  • If the time unit qualifier is omitted it defaults to the natural period of the function, e.g. startOfYear("+1") is the same as startofYear("+1y").
  • If the plus/minus (+/-) sign is omitted, plus is assumed.
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)

(only in
predicate)
Examples
  • Find new issues since the start of this year:

    created > startOfYear()
  • Find new issues since the start of last year:

    created > startOfYear("-1")

^top of functions | ^^top of topic

subtaskIssueTypes()

Perform searches based on issues which are sub-tasks.

See also standardIssueTypes().

Syntax
subtaskIssueTypes()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that are subtasks (i.e. issues whose Issue Type is a subtask issue type):

    issuetype in subtaskIssueTypes()

^top of functions | ^^top of topic

unreleasedVersions()

Perform searches based on the unreleased versions (i.e. versions that your JIRA administrator has not yet released) of a specified project.

You can also search on the unreleased versions of all projects, by omitting the project parameter.

See also earliestUnreleasedVersion().

Syntax
unreleasedVersions()

or

unreleasedVersions(project)
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues whose FixVersionis an unreleased version of the ABC project:

    fixVersion in unreleasedVersions(ABC)
  • Find issues that relate to unreleased versions of the ABC project:

    affectedVersion in unreleasedVersions(ABC)

    or

    fixVersion in unreleasedVersions(ABC)

^top of functions | ^^top of topic

votedIssues()

Perform searches based on issues for which you have voted. Also see the Voter field.

Note that this function can only be used by logged-in users.

Syntax
votedIssues()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that you have voted for:

    issue in votedIssues()

^top of functions | ^^top of topic

watchedIssues()

Perform searches based on issues which you are watching. Also see the Watcher field.

Note that this function can only be used by logged-in users.

Syntax
watchedIssues()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that you are watching:

    issue in watchedIssues()
Supported Fields
Supported Operators

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(error)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)
Examples
  • Find issues that you have recently viewed:

    issue in issueHistory()

^top of functions | ^^top of topic

Reserved Characters

JQL has a list of reserved characters:

  • space (" ")
  • "+"
  • "."
  • ","
  • ";"
  • "?"
  • "|"
  • "*"
  • "/"
  • "%"
  • "^"
  • "$"
  • "#"
  • "@"
  • "["
  • "]"

If you wish to use these characters in queries, you need to:

  • surround them with quote-marks (you can use either single quote-marks (') or double quote-marks ("));
    and, if you are searching a text field and the character is on the list of reserved characters for Text Searches,
  • precede them with two backslashes.

The text fields are:

The JQL field "text" as in text ~ "some words" searches an issue's Summary, Description, Environment, Comments. It also searches all text custom fields. If you have many text custom fields you can improve performance of your queries by searching on specific fields, e.g.
Summary ~ "some words" OR Description ~ "some words"

For example:

version = "[example]"
version = "4.2"
summary ~ "\\[example\\]"
summary ~ "4.2"

Reserved Words

JQL has a list of reserved words. These words need to be surrounded by quote-marks if you wish to use them in queries:

"abort", "access", "add", "after", "alias", "all", "alter", "and", "any", "as", "asc",
"audit", "avg", "before", "begin", "between", "boolean", "break", "by", "byte", "catch", "cf",
"char", "character", "check", "checkpoint", "collate", "collation", "column", "commit", "connect", "continue",
"count", "create", "current", "date", "decimal", "declare", "decrement", "default", "defaults", "define", "delete",
"delimiter", "desc", "difference", "distinct", "divide", "do", "double", "drop", "else", "empty", "encoding",
"end", "equals", "escape", "exclusive", "exec", "execute", "exists", "explain", "false", "fetch", "file", "field",
"first", "float", "for", "from", "function", "go", "goto", "grant", "greater", "group", "having",
"identified", "if", "immediate", "in", "increment", "index", "initial", "inner", "inout", "input", "insert",
"int", "integer", "intersect", "intersection", "into", "is", "isempty", "isnull", "join", "last", "left",
"less", "like", "limit", "lock", "long", "max", "min", "minus", "mode", "modify",
"modulo", "more", "multiply", "next", "noaudit", "not", "notin", "nowait", "null", "number", "object",
"of", "on", "option", "or", "order", "outer", "output", "power", "previous", "prior", "privileges",
"public", "raise", "raw", "remainder", "rename", "resource", "return", "returns", "revoke", "right", "row",
"rowid", "rownum", "rows", "select", "session", "set", "share", "size", "sqrt", "start", "strict",
"string", "subtract", "sum", "synonym", "table", "then", "to", "trans", "transaction", "trigger", "true",
"uid", "union", "unique", "update", "user", "validate", "values", "view", "when", "whenever", "where",
"while", "with"

You can use either single quote-marks (') or double quote-marks (").

(Note for JIRA administrators: this list is hard coded in the JqlStringSupportImpl.java file.)

=

!=

~

!~

>

>=

<

<=

IS

IS NOT

IN

NOT IN

WAS

WAS IN

WAS NOT

WAS NOT IN

CHANGED

(tick)

(tick)

(error)

(error)

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

(tick)

(error)

(error)

(error)

(error)

(error)

  • This function accepts 1 to 100 globalIds. Specifying 0 or more than 100 globalIds will result in errors.

Was this helpful?

Thanks for your feedback!

Why was this unhelpful?

Have a question about this article?

See questions about this article

Powered by Confluence and Scroll Viewport