tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:数式のADDMONTHS関数を試してみました

数式のADDMONTHS関数を試してみました。

f:id:tyoshikawa1106:20201005194814p:plain


特定の日付を基準に○ヶ月前や○ヶ月後と加算/減算したいけど、数式でやろうと思ったら面倒だった気がする。と思いTwitterでつぶやいてみたところ、"『ADDMONTHS(date, num)』ですかね。"と教えてもらい、えっ..数式関数にあったっけと検索したら一発でヒットしました。(ヘルプにもTrailheadにもあった。)

f:id:tyoshikawa1106:20201005202244p:plain


かれこれ2年前、Spring'18から追加された関数です。
f:id:tyoshikawa1106:20201005200236p:plain


数式項目あれだけ作っていて気づかなかったのか...って感じで今更ですがDev組織に項目を作って動かしてみました。

1ヶ月前の場合

numの部分はマイナスで指定すると過去に遡れます。
f:id:tyoshikawa1106:20201005200623p:plain

1ヶ月後の場合

numの部分はプラスで指定します。
f:id:tyoshikawa1106:20201005200723p:plain


上記の使い方で下記のように検証用の項目を作ってみました。
f:id:tyoshikawa1106:20201005194704p:plain

数式の実行結果

月初日から計算

f:id:tyoshikawa1106:20201005200954p:plain

月中日から計算

f:id:tyoshikawa1106:20201005201019p:plain

月末日から計算

f:id:tyoshikawa1106:20201005201037p:plain

NULL値から計算

f:id:tyoshikawa1106:20201005201152p:plain


実行結果は上記の通りです。ADDMONTHS関数の説明にも記載がありましたが月末日は実際に有効な日付が算出されました。また、NULL値の場合も特にBLANK判定をしていなくてもエラーにはなりませんでした。

ADDMONTS関数の計算上限

念の為上限があるかチェックしてみました。XXヶ月前と後で項目を用意して「9999」ヶ月分加算減算を試してみました。
f:id:tyoshikawa1106:20201005201521p:plain:w300


特に問題なく計算してくれるようです。
f:id:tyoshikawa1106:20201005201558p:plain


ただし「-99999」とありえない桁の数値をつかったところ、流石にエラーとなりました。
f:id:tyoshikawa1106:20201005201657p:plain:w250


エラーメッセージが表示されたときの画面は下記のような感じです。
f:id:tyoshikawa1106:20201005201728p:plain

問題が発生しているようです。

申し訳ございません。問題が発生しました。もう一度お試しください。問題が解消されない場合は、ここに表示されているエラー ID と関連するその他の詳細情報をシステム管理者にご連絡ください。

Bad Request


おそらくSalesforceの日付型がサポートする範囲を超えているため発生した当然のエラーと思います。
f:id:tyoshikawa1106:20201005201818p:plain

Help | Training | Salesforce


数式のADDMONTHS関数はこんな感じでした。レポートの抽出条件などちょっと用意したいときにはApexで実装しなくても数式で用意できるので便利でした。ここは変わらないだろうと思い込んでいた箇所にも新機能は追加されるのでバージョンアップ時にはちゃんとリリースノート読むとかしないといけないなって思いました。