数式のADDMONTHS関数を試してみました。
特定の日付を基準に○ヶ月前や○ヶ月後と加算/減算したいけど、数式でやろうと思ったら面倒だった気がする。と思いTwitterでつぶやいてみたところ、"『ADDMONTHS(date, num)』ですかね。"と教えてもらい、えっ..数式関数にあったっけと検索したら一発でヒットしました。(ヘルプにもTrailheadにもあった。)
かれこれ2年前、Spring'18から追加された関数です。
数式項目あれだけ作っていて気づかなかったのか...って感じで今更ですがDev組織に項目を作って動かしてみました。
1ヶ月前の場合
numの部分はマイナスで指定すると過去に遡れます。
1ヶ月後の場合
numの部分はプラスで指定します。
上記の使い方で下記のように検証用の項目を作ってみました。
数式の実行結果
月初日から計算
月中日から計算
月末日から計算
NULL値から計算
実行結果は上記の通りです。ADDMONTHS関数の説明にも記載がありましたが月末日は実際に有効な日付が算出されました。また、NULL値の場合も特にBLANK判定をしていなくてもエラーにはなりませんでした。
ADDMONTS関数の計算上限
念の為上限があるかチェックしてみました。XXヶ月前と後で項目を用意して「9999」ヶ月分加算減算を試してみました。
特に問題なく計算してくれるようです。
ただし「-99999」とありえない桁の数値をつかったところ、流石にエラーとなりました。
エラーメッセージが表示されたときの画面は下記のような感じです。
問題が発生しているようです。
申し訳ございません。問題が発生しました。もう一度お試しください。問題が解消されない場合は、ここに表示されているエラー ID と関連するその他の詳細情報をシステム管理者にご連絡ください。
Bad Request
おそらくSalesforceの日付型がサポートする範囲を超えているため発生した当然のエラーと思います。
数式のADDMONTHS関数はこんな感じでした。レポートの抽出条件などちょっと用意したいときにはApexで実装しなくても数式で用意できるので便利でした。ここは変わらないだろうと思い込んでいた箇所にも新機能は追加されるのでバージョンアップ時にはちゃんとリリースノート読むとかしないといけないなって思いました。