Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root


1 badge earned


Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!


Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.


Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!


Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
Community Members
Community Events
Community Groups

JQL to show issues where status changed from one to another within the last hour

I'm trying to write a query that will return all of the tickets where the status changed FROM 'StatusA' TO 'StatusB' DURING (current date/time -1h, current date/time).

At first I was hoping that the now() function would work, but it appears that arguments cannot be passed to it.

Trying to make this dynamic so that I don't have to update the query every hour -- because that just isn't realistic.


Any thoughts?

2 answers

1 accepted

4 votes
Answer accepted
Jack Brickey Community Leader Jan 13, 2020

you can use this JQL or similar.

updated >= "-2h" and updated <= "-1h"

Except I don't believe that would link directly to the status change from A to B.
That would flag any issues that have been updated between that hour/time difference that have ever moved from A to B (regardless of when).

Issue changes from A to B on 12/15/2019
Today is 1/13/2020 and someone makes some sort of update to the ticket within the last hour.
I would expect that the issue would now appear in the filter I am trying to set up -- in this scenario I wouldn't want it to.

This is where status changed from (A) to (B) during (date1, date2) works nice for date ranges. Doesn't work for trying to reference the last hour.

Jack Brickey Community Leader Jan 13, 2020

I think you can accomplish your goal but you need to tweak it a bit to meet your needs. Here is an example....

status changed FROM "to do" to "done" after "-2h" and status changed FROM "to do" to "done" before "-1h"


Like # people like this


So, after reading your most-recent reply, I've figured out what I needed to do.

Like I said in the beginning, I was trying to pass arguments to the now() function - which I knew didn't work.

From my example I originally provided, I've only ever passed dates after during in my query ex: during (date1, date2)


So, in the end...

What I was trying to do (which DOES NOT work):
status changed from (A) to (B) during (now(-1h), now())

What I needed to do (which DOES work):
status changed from (A) to (B) during (-1h, now())


Typically my queries consist of a lot of date changes, so I use startOfDay(), endOfDay() quite a bit and pass day change arguments to those (ex: -1d)

I never thought to just pass a hour change not inside of an actual function.


Thanks for providing an example that guided me to what I really wanted.

Like # people like this

I think "now()" in this case is redundant. A simpler request will be

status changed from (A) to (B) after -1h

is it correct?

Like # people like this

That makes sense. Like I think I said somewhere in my reply in this chain, my filters typically deal with dates and have always been a date range - that's why my mind went to the DURING approach I guess.

You are correct though. Using after -1h would achieve the same thing. Thanks for pointing it out as another solution.

Like # people like this

My query 


status changed to Closed during ("2020-10-01", "2020-11-01")


is not yielding any results although there are tickets that had this status transition.


Can anyone help?

Like # people like this

Is your project a "Next Gen" aka "Team Managed" project?

There is a bug in Next Gen that leads to inconsistent results when you query on the name of a status (particularly when the name is used in multiple projects, e.g. one of the default status names).

The workaround is to change the name of the status to something unique or don't use the name at all, but instead use the ID of the status in question.


and also Stephen Wright's comment on the status ID workaround:

Jimmy Seddon Community Leader Feb 24, 2022

Thank you guys!  This thread was super helpful in helping me solve a question for one of my users!

Like Filipi Lima likes this

is there a similar thing for seconds? trying to resolve an issue with missing jira trigger 'status changed' trigger. So was aiming at using the 'issue updated' trigger along with a JQL which says the status changed VERY recently. Because else any other update will also trigger the workflow.

I found there is -1m, but is there a thing for seconds?


Search for issues that were last updated on, before, or after a particular date (or date range). Note that if a time-component is not specified, midnight will be assumed. Please note that the search results will be relative to your configured time zone (which is by default the Jira server's time zone).

Use one of the following formats:

"yyyy/MM/dd HH:mm"
"yyyy-MM-dd HH:mm"


No seconds by Design.

FYI if you have API data, yes seconds are there:

  "issues": [
    "fields": {
      "updated": "2002-04-06T12:12:56.000+0900",
  "id": "1",
  "key": "abc-1",

The projects are next gen but I am afraid using status ids also does not work


status changed to 6 after -1m


where 6 is id of Closed


still returns empty result

Like Joel Lepp likes this

I would use this -

status changed from "In Progress" to Done DURING (now(-1), now())

Suggest an answer

Log in or Sign up to answer