【Salesforce】数式項目でADDMONTHS関数を使って月末日付を取得

Salesforce
この記事は約2分で読めます。

日付項目から月末の日付を取得したいことがありますよね?

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月に注意しましょう。

この記事を書いた人
サイト運営者
Ryu
Ryu

フリーランスエンジニア。転職含め9社経験。第二新卒から未経験でIT就職。社内SEとSIerのSEで働き、企画〜運用保守、フロント〜バック・インフラとフルスタックな守備範囲。C#とSQLとSalesforceが得意。

Ryuをフォローする
Salesforce
スポンサーリンク