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.
| Operator | Meaning |
|---|---|
eq | Equal to |
ne | Not equal to |
lt | Less than (before) |
le | Less than or equal to |
gt | Greater than (after) |
ge | Greater 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:

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:

Example 2: Before or after today
For dates before today, compare with the start of today:
ResignationDate lt '@{startOfDay(utcNow())}'

For dates after today, compare with the start of tomorrow, so today’s items aren’t included:
ResignationDate ge '@{startOfDay(addDays(utcNow(),1))}'

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.
| Items | Filter Query |
|---|---|
| Created before today | Created lt '@{startOfDay(utcNow())}' |
| Created in the last 24 hours | Created ge '@{addDays(utcNow(),-1)}' |
| Modified today | Modified ge '@{startOfDay(utcNow())}' |
| Not modified in 90 days | Modified 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:

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

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:

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:


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:

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:
- How to Use Power Automate Get Items Filter Query + 8 Examples
- Power Automate Get Items Filter Query Multiple Conditions
- Power Automate get items filter query equals null | Power Automate get items filter query not equal null
- How to Get More Than 100 Items Using The Get Items Action in Power Automate?
- Power Automate Get items Order By
- Power Automate Filter Query Operators [With Examples]
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.

Preeti Sahu is a Microsoft MVP for Power Apps with over six years of experience working with SharePoint Online and the Power Platform. She is the co-author of the book Microsoft Power Platform: A Deep Dive. As a Power Platform developer, she has built various tools with Power Apps and Power Automate, and she makes Microsoft 365 videos for YouTube.