日付型・日時型フィールドで比較対象より前(過去)の値である場合にエラーを出すことは可能ですか。

回答

以下のいずれかの方法で対応可能です。

  • 対応方法1:自動計算フィールドによって、修正を促すメッセージを表示する

  • 対応方法2:自動計算フィールドとカスタムバリデーションを組み合わせることで、エラーを表示する(カスタムバリデーションはエンタープライズプラン限定の機能です)

例:日付型フィールドの場合

「開始日」と「終了日」の2つの日付型フィールドがあり、終了日の日付が開始日の日付よりも前(過去)の場合にエラーを出したい場合の、具体的な対応例をご案内します。

対応方法1:自動計算フィールドによって、修正を促すメッセージを表示する

  1. 「開始日」「終了日」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。

  2. 以下の計算式を設定すると、終了日が開始日よりも前(過去)の場合に「NG:終了日は、開始日より後の日付を設定してください」と表示されます。

if(text($開始日の変数, "yyyy-mm-dd") > text($終了日の変数, "yyyy-mm-dd"), "NG:終了日は、開始日より後の日付を設定してください", "OK")

text関数で日付の形式を揃える

2つの日付を比較するため、どちらの日付も text関数 で yyyy-mm-dd 形式の文字列に変換します(他の形式だと誤った結果になる場合があります)。

  • OK例)yyyy-mm-dd 形式の場合
    • 2025-05-08 と 2025-05-10 のように常に桁数が揃っているため、日付の前後関係が正しく判定されます。
  • NG例)yyyy-m-d 形式の場合
    • 2025-5-8 と 2025-5-10 のように桁数が揃っていない場合、日付の前後関係が正しく判定できません(この例だと8の方が1より大きいため、誤って判定されてしまいます)。

対応方法2:自動計算フィールドとカスタムバリデーションを組み合わせることで、エラーを表示する

  1. 「開始日」「終了日」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。

  2. 以下の計算式を設定します。

if(text($開始日の変数, "yyyy-mm-dd") > text($終了日の変数, "yyyy-mm-dd"), 1, 0)

text関数で日付の形式を揃える

2つの日付を比較するため、どちらの日付も text関数 で yyyy-mm-dd 形式の文字列に変換します(他の形式だと誤った結果になる場合があります)。

  • OK例)yyyy-mm-dd 形式の場合
    • 2025-05-08 と 2025-05-10 のように常に桁数が揃っているため、日付の前後関係が正しく判定されます。
  • NG例)yyyy-m-d 形式の場合
    • 2025-5-8 と 2025-5-10 のように桁数が揃っていない場合、日付の前後関係が正しく判定できません(この例だと8の方が1より大きいため、誤って判定されてしまいます)。
  1. 作成した自動計算フィールドの内容をもとに、「終了日」フィールドへカスタムバリデーションを設定します。

    「終了日」フィールドのカスタムバリデーション設定画面

例:日時型フィールドの場合

「開始日時」と「終了日時」の2つの日時型フィールドがあり、終了日時が開始日時よりも前(過去)の場合にエラーを出したい場合の、具体的な対応例をご案内します。

対応方法1:自動計算フィールドによって、修正を促すメッセージを表示する

  1. 「開始日時」「終了日時」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。

  2. 以下の計算式を設定すると、終了日時が開始日時よりも前(過去)の場合に「NG:終了日時は、開始日時より後の日時を設定してください」と表示されます。

if($開始日時の変数 > $終了日時の変数, "NG:終了日時は、開始日時より後の日時を設定してください", "OK")

対応方法2:自動計算フィールドとカスタムバリデーションを組み合わせることで、エラーを表示する

  1. 「開始日時」「終了日時」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。

  2. 以下の計算式を設定します。

if($開始日時の変数 > $終了日時の変数, 1, 0)
  1. 作成した自動計算フィールドの内容をもとに、「終了日時」フィールドへカスタムバリデーションを設定します。

    「終了日時」フィールドのカスタムバリデーション設定画面

参考情報

カスタムバリデーションを設定する(エンタープライズプランのみ)

フォームの自動計算フィールドで使用可能な変数や関数を教えて下さい

この記事は役に立ちましたか?