Live training: next batches coming soon. Join the waitlist:Waitlists open:Developer Training →Developer →Copilot Studio Training →Copilot Studio →

Power Automate Filter Between Dates: Get Items Filter Query and Filter Array

Two comparisons on the same column are all a date range needs. To filter between dates in Power Automate, type a ge test for the start date and an le test for the end date in the Get items Filter Query, both as ISO dates:

DueDate ge '2026-10-01' and DueDate le '2026-10-31'

On our 620-item Service Requests list, that query returned the 22 requests due in October 2026.

In this tutorial, we’ll do a real power automate filter between dates build: the Filter Query syntax, date-only vs date-and-time columns, a dynamic last-7-days range, Filter array between two dates, and the mistakes that return nothing.

Filter Query Syntax for a Date Range

The Filter Query box in the SharePoint Get items action takes an OData filter. SharePoint runs it on the server, so only the matching rows come back to your flow.

For dates, you’ll use these comparison operators:

OperatorMeansExample
geon or afterDueDate ge '2026-10-01'
gtafterDueDate gt '2026-10-01'
leon or beforeDueDate le '2026-10-31'
ltbeforeDueDate lt '2026-11-01'

Join the two tests with a lowercase and, put each date in single quotes, and use the column’s internal name. More operators, like eq and startswith, are in our OData filter query guide.

Build the Demo Flow Step by Step

Our test list, Service Requests, lives on the SPGuides site. Its DueDate column is date-only, with due dates from 1/5/2026 to 10/11/2026. Here’s the flow, and more starters are on our Power Automate tutorials page:

  1. Go to make.powerautomate.com, select Create > Instant cloud flow, pick Manually trigger a flow and name it SPGuides Filter Dates demo.
  2. Add the SharePoint Get items action. Pick your Site Address and set List Name to Service Requests.
  3. Open Advanced parameters, add Filter Query and Top Count, then type the query and 1000.
Get items action with the Filter Query DueDate ge 2026-10-01 and DueDate le 2026-10-31

Top Count matters. In the same list, Get items without it read only 100 of the 620 items.

Next, add a Compose action with length(body('Get_items_October')?['value']) to count the rows. Select Save, then Test > Manually > Run flow, and open the run:

Run history with the Count October compose output of 22 items due in October

The count was 22, including Password reset #1269 (due 10/1/2026) and Printer jam #1279 (due 10/11/2026).

Date-Only vs Date and Time Columns (and UTC)

Get items returned DueDate as 2026-10-01, with no time. The Created column came back as 2026-10-14T10:29:43Z. That trailing Z means UTC.

Here’s the catch. DueDate eq '2026-10-09' returned 0 items, although two requests are due that day. A one-day range found both:

DueDate ge '2026-10-09' and DueDate lt '2026-10-10'

So for a single day, use ge that day and lt the next day. Don’t use eq on dates.

For date-and-time columns, remember that utcNow() is UTC too. Someone in New York at 9 PM is already on tomorrow’s UTC date. Convert first with our guide on converting time zones in Power Automate.

How Do I Filter the Last 7 Days Dynamically?

Build both dates with expressions. In a Compose named Start date, addDays() in Power Automate goes back seven days, and formatDateTime() trims it to a date:

Expression editor with formatDateTime addDays utcNow minus 7 in yyyy-MM-dd format

A second Compose, End date, holds formatDateTime(utcNow(), 'yyyy-MM-dd'). Our post on formatDateTime in Power Automate lists the other format codes.

Then drop both outputs into the Filter Query between single quotes:

Get items last 7 days Filter Query using the Start date and End date compose outputs

On 10/18/2026, Start date was 2026-10-11 and End date was 2026-10-18. The query returned 2 items, the two due 10/11/2026.

You can also skip the Compose actions and write the expressions inline:

DueDate ge '@{formatDateTime(addDays(utcNow(), -7), 'yyyy-MM-dd')}' and DueDate le '@{formatDateTime(utcNow(), 'yyyy-MM-dd')}'

Change -7 to -30 for the last 30 days. Our 30-day version returned 48 items.

Filter Array Between Two Dates

Use the Power Automate Filter array action when the rows are already in your flow, or come from Excel or an HTTP call. Select Edit in advanced mode and paste:

@and(greaterOrEquals(item()?['DueDate'], '2026-10-01'), less(item()?['DueDate'], '2026-11-01'))
Code view of the Filter array October action with greaterOrEquals and less on DueDate

From was body('Get_all_items')?['value'], all 620 items. It kept 22, the same as the OData query.

It works because ISO dates sort like text: 2026-10-09 comes after 2026-10-01. If your values mix formats, compare ticks() on both sides instead. That version also returned 22.

Pro Tip: Filter at the source with the Filter Query when you can. SharePoint sends fewer rows, and the flow runs faster.

Why Does My Date Filter Return Nothing (or Everything)?

I reproduced the three most common mistakes in the same run.

1. US-style dates in Filter array. I swapped in '10/01/2026' and '10/31/2026'. The count dropped to 0, with no error:

Count US format compose output showing 0 items after comparing to 10/01/2026

Filter array compares text here, and “2026-10-01” is never less than “10/31/2026”. Keep both sides ISO, or see how to convert a string to a date.

2. Filtering the Created column. Created ge '2026-10-01' and Created le '2026-10-31' returned all 620 items, because every request was created 10/14/2026:

Count Created compose output showing all 620 items matched the Created date range

Created is when the row was added, not when work is due. Filter the date column that holds your business date.

3. Non-ISO strings in the Filter Query. DueDate ge '10-01-2026' still returned 22, since SharePoint read it as month-day-year. A day-first string like 01-10-2026 is ambiguous, so always use yyyy-MM-dd. The ISO 8601 format error is the other symptom to watch for.

Here are more date and SharePoint flow guides worth reading next:

Frequently Asked Questions

How do I filter SharePoint items between two dates in Power Automate?

In Get items, open Advanced parameters, add Filter Query and type DueDate ge ‘2026-10-01’ and DueDate le ‘2026-10-31’. Use the column’s internal name, ISO yyyy-MM-dd dates and a lowercase and.

Should I use le or lt for the end date?

For a date-only end date, le includes that day. For a date-and-time column or a single day, use lt with the next day, for example DueDate ge ‘2026-10-09’ and DueDate lt ‘2026-10-10’.

Why does my Filter Query with eq on a date return no items?

In our test, DueDate eq ‘2026-10-09’ returned 0 even though two items were due that day. A range from that day (ge) to the next day (lt) returned both.

Can I filter between dates with Filter array instead of OData?

Yes. In advanced mode use @and(greaterOrEquals(item()?[‘DueDate’], ‘2026-10-01’), less(item()?[‘DueDate’], ‘2026-11-01’)). Both sides must be ISO dates, or the comparison silently returns 0.

Where does Microsoft document the SharePoint filter operators?

Microsoft lists the supported comparison operators and date functions in Use OData query operations in SharePoint REST requests on Microsoft Learn.