日付型フィールドで比較対象の日付よりも前(過去)の日付である場合にエラーを出すことは可能ですか。
回答
以下のいずれかの方法で対応可能です。
-
対応方法1:自動計算フィールドによって、修正を促すメッセージを表示する
-
対応方法2:自動計算フィールドとカスタムバリデーションを組み合わせることで、エラーを表示する(カスタムバリデーションはエンタープライズプラン限定の機能です)
例
「開始日」と「終了日」の2つの日付型フィールドがあり、終了日の日付が開始日の日付よりも前(過去)の場合にエラーを出したい場合の、具体的な対応例をご案内します。
対応方法1:自動計算フィールドによって、修正を促すメッセージを表示する
-
「開始日」「終了日」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。
-
以下の計算式を設定すると、終了日が開始日よりも前(過去)の場合に「NG:終了日は、開始日より後の日付を設定してください」と表示されます。
- 自動計算エンジンが「バージョン2025」の場合の例
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より大きいため、誤って判定されてしまいます)。
-
- 自動計算エンジンが「バージョン2020」の場合の例
if(isblank(datedif($開始日の変数, $終了日の変数, "D")), "NG:終了日は、開始日より後の日付を設定してください", "OK")
対応方法2:自動計算フィールドとカスタムバリデーションを組み合わせることで、エラーを表示する
-
「開始日」「終了日」とは別に新しいフィールドを作成し、型を 「自動計算」 に設定します。
-
以下の計算式を設定します。
- 自動計算エンジンが「バージョン2025」の場合の例
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より大きいため、誤って判定されてしまいます)。
-
- 自動計算エンジンが「バージョン2020」の場合の例
if(isblank(datedif($開始日の変数, $終了日の変数, "D")), 1, 0)
-
作成した自動計算フィールドの内容をもとに、「終了日」フィールドへカスタムバリデーションを設定します。