Power Automate: How to Check If a Date Is Blank (4 Methods)

Checking if a date field is blank in Power Automate sounds straightforward — until your flow crashes, returns unexpected results, or silently passes the condition when it shouldn’t.

The reason this trips up so many developers is that blank dates behave differently depending on where your date value comes from — a SharePoint list, a Microsoft Forms response, a manually set variable, or an HTTP/JSON response each require a different approach.

In this tutorial, I’ll walk you through every scenario using real-world workflow examples, explain the hidden gotcha that causes 80% of failures, and give you the exact expressions to copy into your flow.

Before You Start: The Hidden Gotcha Nobody Talks About

Here’s what most tutorials skip: SharePoint date columns are never truly null.

When a user leaves a SharePoint date column blank, Power Automate does not receive null; it receives a value internally treated as 01/01/1900 00:00:00. This means if you use a simple null check, your condition will always return false, even when the field visually appears empty in your SharePoint list.

Additionally, Microsoft Forms passes blank date fields as an empty string "" — not null, and not 01/01/1900. This is why an expression that works perfectly for SharePoint will completely fail when the data comes from a Form.

Understanding the source of your date is the single most important step before you write any condition.

Which Method Should You Use? (Decision Tree)

Use this quick guide to identify the right approach before building your flow:

Where is your date value coming from?

├── SharePoint List (trigger output)
│ └── Use: empty(triggerOutputs()?['body/YourDateColumn'])

├── Microsoft Forms (form response)
│ └── Use: equals(variables('varDate'), '')

├── A String Variable (initialized in flow)
│ └── Use: equals(variables('varDate'), null)

└── HTTP Response / Parsed JSON
└── Use: equals(body('Parse_JSON')?['DateField'], null)

Pre-Flight Checklist Before Building Your Condition

Before adding a single action to your flow, confirm the following:

  •  Identify your date field’s data source (SharePoint, Forms, Variable, API)
  •  Check whether the column is Optional or Required in your SharePoint list
  •  Decide whether your business logic should treat 01/01/1900 as “blank”
  •  Confirm whether you need to handle both null and empty string ("") cases
  •  Plan an error handling branch if you intend to use formatDateTime() on a potentially null date
  •  Test with both a blank AND a populated date before deploying to production

Check If a Date Is Blank In Power Automate

Here, I will show four different real-world scenarios for testing blank date conditions.

Method 1: Check If a SharePoint Date Column Is Blank in Power Automate (Using empty())

This is the most common scenario — your flow is triggered when a SharePoint list item is created or modified, and you need to check whether a date column (such as Joining Date) contains a value.

For this example, I am using the Employee Onboarding SharePoint list.

Check If a SharePoint Date Column Is Blank in Power Automate

In this list, I have a Joining Date column. If the Joining Date is blank when a new item is created, the flow should automatically set the value to today’s date.

Step 1: Create the Automated Flow

  1. Go to Power Automate and select + New flow → Automated cloud flow
  2. Enter a flow name and choose the trigger: When an item is created
  3. Configure the trigger with your Site Address and List Name
Power Automate flow check if date is not empty and null

Step 2: Add a Compose Action to Evaluate the Date

  1. Select + New Step → Data Operation → Compose
  2. In the Inputs field, switch to the Expression tab and enter:
empty(triggerBody()?['JoiningDate'])
Check if date is empty in SharePoint JSON formatting in Power Automate

This expression returns true if the date column is blank, and false if it contains a date value.

Step 3: Add a Condition Action

  1. Add a + New Step → Control → Condition
  2. Configure the condition as follows:
    • Left value: Select the Outputs dynamic content from your Compose step
    • Operator: is equal to
    • Right value: true
Power Automate Check for a null SharePoint field value
  1. In the If yes branch, add the actions that should run when the Joining Date is blank. In this example, we will automatically update the item and set the Joining Date to today’s date.
  2. In the If no branch, add actions for when the date is populated
Check If a Date is Blank in Power Automate

Step 4: Save and Test

  1. Select Save, then click Test → Manually → Save & Test
  2. Go to your SharePoint list, add an item — once with the date column empty, and once with a date value entered
Power Automate check if date field is empty

Expected result: When TaskCompletedDate is blank, the Compose returns true and the If yes branch executes. When a date is present, it returns false and the If no branch executes.

How to Process Null Values for Dates and Numbers in Power Autoamte

Method 2: Check a Date Using a String Variable in Power Automate (Safe formatDateTime() Pattern)

The problem with using formatDateTime() directly on a date field is that if the field is blank, the expression throws a runtime error, and your flow fails. The solution is to initialize a String variable that safely handles the null before you ever try to format it.

Step 1: Create the Automated Flow

Set up the same trigger as Method 1 — When an item is created or modified — configured with your Site Address and List Name.

Step 2: Initialize a String Variable

  1. Select + New Step → Variables → Initialize variable
  2. Configure as follows:
    • Name: varJoiningDate
    • Type: String
    • Value: Switch to the Expression tab and enter:
if(empty(triggerBody()?['JoiningDate']),null,formatDateTime(empty(triggerBody()?['JoiningDate']),'yyyy-MM-dd'))
Check a Date Using a String Variable in Power Automate

This expression first checks if the field is blank. If it is blank, the variable is set to null. If it contains a date, the date is safely formatted as yyyy-MM-dd and stored in the variable.

Step 3: Add a Condition to Check the Variable

  1. Add a Control → Condition action
  2. Configure:
    • Left value: variables(‘varTaskCompletedDate’)
    • Operator: is equal to
    • Right value: null
  3. In the If yes branch, add a Compose action with the message: Yes, the date value is blank
  4. In the If no branch, add a Compose action with the message: No, the date value is not blank
Filter SharePoint list items without a date in Power Automate

Step 4: Save and Test

Test with both an empty and a populated date. The variable pattern completely eliminates the formatDateTime crash and gives you a clean, reusable date string to use anywhere downstream in your flow.

How to set up a Condition in Power Automate flow

Method 3: Check a Blank Date from Microsoft Forms in Power Automate

If your date is coming from a Microsoft Forms response — for example, an employee submitting a leave request with an optional date field — the check is different because Forms passes blank fields as an empty string "", not as null.

Step 1: Set Up the Trigger and Variable

  1. Use the trigger: When a new response is submitted (Microsoft Forms)
  2. Add a Get response details action
  3. Initialize a String variable varFormDate and set its value to the dynamic content of your date question field from the form response
Check a Blank Date from Microsoft Forms in Power Automate

Step 2: Check If the Variable Is Empty String

  1. Add a Control → Condition action
  2. Configure:
    • Left value: variables(‘varFormDate’)
    • Operator: is equal to
    • Right value: "" (two double quotes — an empty string)
Check if date field from MS Forms is empty in Power Automate

This catches blank form responses correctly without false positives.

Method 4: Using coalesce() for Cleaner Null Handling

If you want a more elegant, one-line approach — especially useful when setting a fallback value — use the coalesce() function. This is a lesser-known but powerful expression that returns the first non-null value from a list of arguments.

Expression:

coalesce(triggerBody()?['JoiningDate'], '')

If the date field is null, this returns an empty string ''. If it has a value, it returns the date. You can then check if the result equals '' in your condition. This is particularly useful when you want to pass a safe default value downstream instead of null.

Scenario Reference: Which Expression to Use

ScenarioData SourceCorrect ExpressionCommon Mistake to Avoid
Task approval — check if due date is setSharePoint Listempty(triggerOutputs()?[‘body/DueDate’])Using null check instead of empty()
Leave request form — optional end dateMicrosoft Formsequals(variables(‘varDate’),”)Using empty() directly on form output
Reminder email — format date safelySharePoint + Variableif(empty(…), null, formatDateTime(…))Using formatDateTime() without guard
REST API response — check date in JSONHTTP / Parse JSONequals(body(‘Parse_JSON’)?[‘DateField’], null)Assuming string check works on JSON null
Set default date if blankAny sourcecoalesce(triggerOutputs()?[‘body/Date’], ”)Skipping fallback and letting null propagate

Common Errors and How to Fix Them

Error: “The template language expression is invalid” on formatDateTime()

  • Cause: You’re passing a null value directly to formatDateTime()
  • Fix: Wrap it with the if(empty(…), null, formatDateTime(…)) pattern from Method 2

Error: Condition always returns false even though the date field looks empty

  • Cause: SharePoint is storing 01/01/1900 instead of null
  • Fix: Use empty() on the raw trigger output rather than checking for null

Error: Forms blank date is not caught by empty() condition

  • Cause: Forms sends an empty string “”, not null
  • Fix: Use equals(variables(‘varDate’), ”) instead of empty()

Error: Flow passes the blank check but crashes further downstream

  • Cause: You checked for blank at the trigger but passed the raw output (not the guarded variable) to a later action
  • Fix: Always use the initialized String variable (from Method 2) as the value you pass to all downstream actions

You may like the following Power Automate tutorials:

Frequently Asked Questions

Why does empty() return false for a blank SharePoint date?

SharePoint date columns are never truly null when empty. The platform stores a default value of 01/01/1900 00:00:00 internally. Because empty() evaluates the raw trigger output and this value is not technically null or an empty string, it returns false. Always use empty(triggerOutputs()?[‘body/YourDateColumn’]) which evaluates the field-level output before any type conversion.

What is the difference between null and empty string in Power Automate date checks?

A null value means no data exists at all — typically from SharePoint columns or unset variables. An empty string “” means a string variable exists but has no content — this is what Microsoft Forms sends for blank date fields. The check you use must match the type: equals(x, null) for null, and equals(x, ”) for empty string.

Can I use empty() inside formatDateTime() directly?

No — you cannot nest empty() inside formatDateTime(). Instead, wrap the entire expression in an if() statement: if(empty(triggerOutputs()?[‘body/Date’]), null, formatDateTime(…)). This evaluates the blank check first and only runs formatDateTime() when a valid date exists.

How do I handle blank dates coming from Microsoft Forms?

Since Forms passes blank date fields as empty strings, initialize a String variable with the form output, then check: equals(variables(‘varFormDate’), ”). Do not use empty() directly on the form response — it will not reliably catch blank form dates.

What happens if I pass a null date to an Update Item (SharePoint) action?

The flow will fail at runtime with a bad request error because SharePoint expects either a valid date string or no value passed at all. Always guard your date value with a condition before passing it to any SharePoint action, or use the coalesce() pattern to supply a safe fallback.

Is there a way to clear a SharePoint date column back to blank using Power Automate?

Yes. In the Update Item action, leave the date field completely empty (do not pass null or an empty string). If you are dynamically constructing the request, use the triggerOutputs()?[‘body/YourColumn’] output guarded with a condition rather than passing a formatted null string.

>

Build a High-Performance Project Management Site in SharePoint Online

User registration Power Apps canvas app

DOWNLOAD USER REGISTRATION POWER APPS CANVAS APP

Download a fully functional Power Apps Canvas App (with Power Automate): User Registration App

Power Platform Tutorial FREE PDF Download

FREE Power Platform Tutorial PDF

Download 135 Pages FREE PDF on Microsoft Power Platform Tutorial. Learn Now…