日付項目から月末の日付を取得したいことがありますよね?
Salesforceヘルプページ([数式 サンプル] 日付型項目から当月・翌月・〇か月後の末日を取得する数式)にもサンプルがありますが、もっとシンプルにできそうだったので、別のサンプルも紹介します。
概要と前提
末日を算出する場合、うるう年の計算等が煩雑になるため、ここでは算出したい末日の翌月の1日から 1を引いて、対象月の末日を算出する。
対象の日付型項目のAPI参照名:DATE__C ※対象の日付型項目のAPI参照名に置き換えてください
数式の戻り値のデータ型:日付型
Salesforceヘルプページのサンプル
対象の日付型項目からその月の末日抽出する場合
DATE( CASE( MONTH( DATE__C ) , 12, YEAR( DATE__C ) + 1, YEAR( DATE__C ) ) ,CASE( MONTH( DATE__C ) , 12, 1, MONTH( DATE__C ) + 1 ) ,1 ) - 1
DATE関数の第二引数(:month)に「13」の数字が入るとエラーになります。
そのため、12月の時は翌年の1月にして、それ以外の月は1ヶ月足してます。
ADDMONTHS関数を使用してシンプルにしたサンプル
ADDMONTHS関数を使って1ヶ月足してます。この場合は12月でもエラーになりません。CASE関数で12月の場合に切り分けることはしなくて良くなります。
YEAR関数とMONTH関数の引数のそれぞれにADDMONTHS関数を使用してください。計2箇所あるので忘れないように!
DATE( YEAR( ADDMONTHS( DATE__C , 1 ) ), MONTH( ADDMONTHS( DATE__C , 1 ) ), 1 ) - 1
対象日翌月(ADDMONTHS_DATE__C)を数式項目として作っていればさらに見やすくなります。この辺りは手間とカスタム項目数の上限との相談になりますが…別の数式でも翌月を使うのならば検討の価値ありです。一つ一つの数式が簡単になります。
ADDMONTHS( DATE__C , 1 )
DATE( YEAR( ADDMONTHS_DATE__C ), MONTH( ADDMONTHS_DATE__C ), 1 ) - 1
まとめ
月末を取得するには、ADDMONTHS関数が便利です。
演算子「+(加算)」を使う時には12月に注意しましょう。