Power Automate Get Items Filter Query by Date (Today, Ranges, Blank)

An HR team I worked with had a flow that emailed IT every evening with the list of employees leaving that day, so their accounts could be disabled. It ran at 8 PM Eastern, and it kept listing the wrong people: tomorrow’s departures instead of today’s. The filter used utcNow(), and at 8 PM in New York, it’s already the next day in UTC.

Date filters in Get items are easy to get almost right. In this tutorial, I’ll show you the filters I use for today, before and after today, the last seven days, date ranges and blank dates, and how to make them use your own time zone.

Quick answer: In Get items, open Advanced parameters and enter a Filter Query that compares the column’s internal name to a date in single quotes, for example ResignationDate ge '@{startOfDay(utcNow())}' and ResignationDate lt '@{startOfDay(addDays(utcNow(),1))}' for today. Use lt, le, gt, ge, eq and ne, build dates with expressions, and remember that utcNow() is UTC time.

How date filters work in Get items

The Filter Query is sent to SharePoint, which returns only the matching items. That’s much faster than getting everything and filtering in the flow. A date filter has three parts: the column’s internal name, an operator, and a date in single quotes.

OperatorMeaning
eqEqual to
neNot equal to
ltLess than (before)
leLess than or equal to
gtGreater than (after)
geGreater than or equal to

Build the date with an expression. In the Filter Query box, type the start of the filter and the opening quote, insert the expression with fx (or by typing / in the new designer), and then type the closing quote. In this post, I write the expressions as '@{...}', which is how they appear when you peek at the code.

Use the internal name, not the display name. A column called Resignation Date might be ResignationDate or Resignation_x0020_Date; you’ll find it at the end of the URL when you edit the column in List settings. For the basics of the Filter Query, see Power Automate Get items filter query.

The sample list and flow

Most examples use an Employee Resignation Log list with Employee ID (Title), Employee Full Name, Resignation Date (a date-only column) and HR Manager. The flow is simple: a trigger, Get items with the filter, and Create HTML table to show the results.

In Create HTML table, set From to the value output of Get items, choose Custom columns, and add the fields you want:

Create HTML table action with the Get items value output and custom Employee ID and Resignation Date columns

For a daily report like the HR team’s, use a Recurrence trigger and send the table with Send an email (V2). For testing, a manual trigger is fine.

Example 1: Date equals today

You might expect ResignationDate eq '@{formatDateTime(utcNow(),'yyyy-MM-dd')}' to work, and on some date-only columns it does. But dates are stored with a time, and eq needs an exact match, so it misses items on Date and Time columns. A range works on both:

ResignationDate ge '@{startOfDay(utcNow())}' and ResignationDate lt '@{startOfDay(addDays(utcNow(),1))}'

That reads “on or after midnight today, and before midnight tomorrow.” The flow returns the employees whose resignation date is today:

Create HTML table output listing the employees whose resignation date is today

Example 2: Before or after today

For dates before today, compare with the start of today:

ResignationDate lt '@{startOfDay(utcNow())}'
Create HTML table output listing resignation dates earlier than today

For dates after today, compare with the start of tomorrow, so today’s items aren’t included:

ResignationDate ge '@{startOfDay(addDays(utcNow(),1))}'
Create HTML table output listing resignation dates later than today

To include today in either one, use lt with tomorrow’s start, or ge with today’s start.

Example 3: Filter by Created or Modified date

Every item has Created and Modified columns, and you filter them the same way. They hold the full date and time, which makes the range approach essential.

ItemsFilter Query
Created before todayCreated lt '@{startOfDay(utcNow())}'
Created in the last 24 hoursCreated ge '@{addDays(utcNow(),-1)}'
Modified todayModified ge '@{startOfDay(utcNow())}'
Not modified in 90 daysModified lt '@{addDays(utcNow(),-90)}'

Example 4: Last 7 days or next 7 days

Many tutorials use EventStartDate gt '@{addDays(utcNow(),-7)}' for the last seven days. That returns everything from seven days ago onward, including every future date. You need both ends of the range:

Past 7 days:
EventStartDate ge '@{addDays(startOfDay(utcNow()),-7)}' and EventStartDate le '@{utcNow()}'

Next 7 days, including today:
EventStartDate ge '@{startOfDay(utcNow())}' and EventStartDate lt '@{addDays(startOfDay(utcNow()),7)}'

I used a custom events list with Event Code (Title), Event Name and Event Start Date columns, and this table:

Create HTML table action with Event Code, Event Name and Event Start Date columns

For a run on November 14, the past-seven-days filter returns the three events from November 8 to 13:

Create HTML table output listing events that started in the last seven days

For longer periods, the pattern is the same; see how to filter the last 30 days.

Example 5: Items active today (a date range)

This task list has a Start Date and a Task Due Date, and I want the tasks that are in progress: started on or before today, and due today or later:

SharePoint task list with Start Date, Task Due Date and Assigned To columns
StartDate le '@{utcNow()}' and TaskDueDate ge '@{startOfDay(utcNow())}'

Compare the due date with the start of today. A task due today is stored at midnight, so TaskDueDate ge '@{utcNow()}' leaves it out once the day has started. Here are the table settings and the result:

Create HTML table action with Task Name, Task Start Date and Task Due Date columns
Create HTML table output listing tasks that started before today and are due later

Example 6: Date is blank

To find items with no date, compare with null, without quotes:

EventEndDate eq null

Use ne null for items that have a date. Microsoft doesn’t document null comparisons for SharePoint, but it’s the standard approach and it works; check the result in your run history. The result lists the events with an empty end date:

Create HTML table output listing events with a blank Event End Date

For other column types, see Power Automate filter query if blank.

Example 7: A specific month or year

SharePoint doesn’t support date functions like month() or year() in a Filter Query, so filter by range instead. For March 2026:

ResignationDate ge '2026-03-01' and ResignationDate lt '2026-04-01'

For the current month, use startOfMonth(utcNow()) and startOfMonth(addToTime(utcNow(),1,'Month')) as the two dates.

Use your local time zone instead of UTC

utcNow() returns UTC time, which is four or five hours ahead of Eastern time and seven or eight ahead of Pacific. That’s why the HR team’s 8 PM flow was a day ahead. To use your own “today”, convert to local time, take the start of the day, and convert back to UTC for SharePoint:

convertToUtc(startOfDay(convertFromUtc(utcNow(),'Eastern Standard Time')),'Eastern Standard Time')

Put that in the filter in place of startOfDay(utcNow()). Use ‘Central Standard Time’, ‘Mountain Standard Time’ or ‘Pacific Standard Time’ for other zones; these names handle daylight saving time automatically. For more, see how to convert UTC to local time in Power Automate.

Troubleshooting

  • No items, but you know they exist. Get items returns 100 items by default and reads only the first 5,000 in large lists. For lists over 5,000 items, turn on Pagination in the action’s settings and set a threshold above your list size.
  • An error about the query. Check the internal column name, the single quotes around the date, and the spaces around the operator.
  • Off by a day. Check the time zone, and look at the raw dates in the run history to see how SharePoint stored them.
  • The trigger or action won’t work with your list. Microsoft supports Power Automate on custom lists and libraries, not on the old Events, Tasks, Contacts or Announcements templates.

These Get items tutorials cover more filter scenarios:

Frequently Asked Questions

How do I filter Get items by today’s date in Power Automate?

Use a range: Column ge ‘@{startOfDay(utcNow())}’ and Column lt ‘@{startOfDay(addDays(utcNow(),1))}’. Microsoft covers the Filter Query in Working with Get items and Get files.

Why does my date filter return the wrong day?

utcNow() is UTC time. In the evening in the US, it’s already tomorrow in UTC. Convert to your time zone with convertFromUtc and convertToUtc.

How do I filter for a blank date in Get items?

Use Column eq null, without quotes around null. Use ne null for items that have a date.

Can I filter Get items by month?

Not with month() or year(), which SharePoint doesn’t support. Filter with a range from the first day of the month to the first day of the next month.

Why does Get items return only 100 items?

That’s the default. Set Top Count up to 5,000, or turn on Pagination for larger lists.