Power AutomateはMicrosoftが提供する業務を自動化するためのRPA(Robotic Process Automation)ツールです。
この記事では、Power Automateの日付、時刻の比較について述べます。

課題:日付の比較がうまくいかない

coffee 700x700 with name
COCOAさん、Power Automateのフローで日付の比較がうまくいかなくて困っています。
日付はどんな形式ですか、COFFEEさん。
cocoa 700x700 with name
coffee 700x700 with name
MM-dd-yyyy形式(月-日-年)で比較しています。この形式で出力したいので。
日付を比較する場合はyyyy-MM-dd形式(年-月-日)にします。Power Automateは、左から順に比較するようです。
cocoa 700x700 with name
coffee 700x700 with name
なるほど。yyyy-MM-dd形式で比較して、MM-dd-yyyy形式で出力するよう変更します。

解決策

正しい比較方法

2つの日付を比較する場合、yyyy MM ddの順で形式を統一します。
そうすると、Power Automateは、yyyy(年)⇒MM(月)⇒dd(日)、の優先度順に比較するため、日付の新旧を正しく判定できます。

    例)formatDateTime(variables(‘date1’),'yyyy-MM-dd')
    例)formatDateTime(variables(‘date1’),'yyyy/MM/dd')

時刻も含めて比較する場合は、yyyy MM dd HH mm ssの順で形式を統一します。
そうすると、Power Automateは、yyyy(年)⇒MM(月)⇒dd(日)⇒HH(時)⇒mm(分)⇒ss(秒)、の優先度順に比較するため、日付の新旧を正しく判定できます。

    例)formatDateTime(variables(‘date1’),'yyyy-MM-dd HH:mm:ss')

正しくない比較方法

順序がyyyy MM ddとなっていない場合は、比較結果が誤ります。

    例)MM-dd-yyyy形式同士の比較はNG。yyyy(年)よりMM(月)を優先して比較するので誤ります。
    例)dd-MM-yyyy形式同士の比較はNG。yyyy(年)やMM(月)よりdd(日)を優先して比較するので誤ります。

また、時刻なしの形式と時刻ありの形式とを比較すると、結果が誤ります。

    例)yyyy-MM-ddyyyy-MM-dd HH:mm:ssとの比較はNG

桁もそろえます。
yyyy-MM-dd と yyyy-M-d の比較は結果が誤ります。

まとめ

日付を比較するときは'yyyy-MM-dd'のように年月日の順の形式に統一します。
時刻も含めて比較する場合は、yyyy MM dd HH mm ssのように年月日時分秒の順の形式に統一します。

参考

Date Comparison Issues