Salesforce には商談の完了予定日をはじめとした多くの日付の情報が保存されています。本ナレッジでは、それらの日付の情報を使って計算や分析に利用できる便利な数式を紹介します。
現在の日付を取得する
現在の日付は TODAY 関数で取得できます。
TODAY()
日付の加算/減算
日付型の加算と減算は日数単位です。
n 日後の日付を取得したい場合は n を加算します。
日付型 + n
月数単位の加算や減算は ADDMONTHS 関数を利用します。
ADDMONTHS( 日付型 , n )
年数単位の加算や減算は月数単位の加算や減算の 12 倍になります。
ADDMONTHS( 日付型 , n * 12 )
日付から年月日を計算する
日付から年月日を計算するには、YEAR 関数、MONTH 関数、DAY 関数を使います。
年を取得する場合は下記の形になります。
YEAR( 日付型 )
月を取得する場合は下記の形になります。
MONTH( 日付型 )
日を取得する場合は下記の形になります。
DAY( 日付型 )
年月日から日付を計算する
年月日から日付を取得するには、DATE 関数または DATEVALUE 関数を使います。
DATE 関数は年月日を数値として渡します。
DATE( YYYY , MM , DD )
DATEVALUE 関数は年月日を文字列として渡します。
DATEVALUE( "YYYY-MM-DD" )
日付から任意の月の初日を計算する
DATE 関数が年月日の数値を引数として日付型に直してくれるので、月初日の取得は YEAR 関数と MONTH 関数を利用することで簡単に計算できます。
DATE( YEAR( 日付型 ) , MONTH( 日付型 ) , 1 )
n ヶ月後の初日を計算するには、ADDMONTHS 関数で月単位の加算を行います。
ADDMONTHS( DATE( YEAR( 日付型 ) , MONTH( 日付型 ) , 1 ) , n )
ADDMONTHS 関数はマイナス値にも対応しているため、同じ数式で n ヶ月前の初日を計算することができます。
日付から任意の月の末日を計算する
末日は初日と異なり 30 日や 31 日など一定ではないため、DATE 関数で日を定数として扱えません。
そこで、次の月の初日から 1 日を引くという計算を行います。
ADDMONTHS( DATE( YEAR( 日付型 ) , MONTH( 日付型 ) , 1 ) , 1 ) - 1
初日と同様に n ヶ月後や n ヶ月前は ADDMONTHS 関数で調整できます。
ADDMONTHS( DATE( YEAR( 日付型 ) , MONTH( 日付型 ) , 1 ) , n + 1 ) - 1
日付から曜日を計算する
日付から曜日を計算する際には WEEKDAY 関数が使えます。
WEEKDAY( 日付型 )
WEEKDAY 関数は曜日が数値として表現されるため、テキストで欲しい場合は CASE 関数で分岐させることで綺麗に書けます。
CASE( WEEKDAY( 日付型 ) ,
1 , "日曜日" ,
2 , "月曜日" ,
3 , "火曜日" ,
4 , "水曜日" ,
5 , "木曜日" ,
6 , "金曜日" ,
7 , "土曜日" ,
"-"
)
日付から今日までの日数を計算する
日付間の日数は差分計算で計算できます。
TODAY() - 日付型
日付から今日までの月数を計算する
日付間の月数を計算するには、年月を月数に直した上で計算できます。
( YEAR( TODAY() ) - YEAR( 日付型 ) ) * 12 + ( MONTH( TODAY() ) - MONTH( 日付型 ) )
これで簡単な月数は計算することができますが、日付が同一月の場合に値に差異が生じることがあります。
これは、日数の大小関係でも月数が変わる場合 (年齢等) に生じる差異のため、日数の大小判定を組み込む必要があります。
( YEAR( TODAY() ) - YEAR( 日付型 ) ) * 12 + ( MONTH( TODAY() ) - MONTH( 日付型 ) )
- IF( AND( MONTH( TODAY() ) = MONTH( 日付型 ) , DAY( TODAY() ) < DAY( 日付型 ) ) , 1 , 0 )
また、分かりにくくはなりますが、基準値を初日に移動させることで大小判定を無視することができます。(`AND( MONTH( TODAY() ) = MONTH( 日付型 ) , DAY( TODAY() ) < DAY( 日付型 ) )` が `FALSE` となるため)
( YEAR( TODAY() - DAY( 日付型 ) + 1 ) - YEAR( 日付型 ) ) * 12
+ ( MONTH( TODAY() - DAY( 日付型 ) + 1 ) - MONTH( 日付型 ) )
日付から今日までの年数を計算する
日付間の年数を計算するには、月数とは異なり簡単な係数の商で計算できます。
ROUND( ( TODAY() - 日付型 ) / 365.2425 , 0 )
*`0.2425` が余分に見えますが、閏年の補正で必要な余分です。
閏年の条件
(1) 西暦が 4 で割り切れる
(2) (1) の例外として、西暦が 100 で割り切れるかつ 400 で割り切れない年は平年となる
簡単に表現すると、「任意の連続した 400 年間のうち 97 年は閏年」となるため、400 年間の日数を考えた場合は 365 * 400 + 97 日となります。
これを 400 年で平均化すると、1 年は`365.2425`日となります。
寄稿者: 中澤大樹 (Nakazawa Hiroki) | Trailblazer Community Forum Ambassador
現在、サークレイス株式会社にて、開発者として Apex や LWC を中心とした Salesforce の機能開発および保守業務を担当。
また Trailblazer Community の質問回答の他に複数のコミュニティの運営に携わっている。
投稿内容は、投稿したユーザーの意見のみを反映し、Salesforce の意見ではありません。ユーザーが Salesforce と関連しているかどうかに関わらず、投稿内容には第三者によって提供された製品、サービス、情報、データ、コンテンツその他の資料(以下「第三者資料」といいます)が含まれるか、またはそれらを構成する可能性があります。 Salesforce は、第三者資料(その正確性、有効性、適時性、完全性、信頼性、整合性、品質、合法性、有用性、安全性、または適用される知的財産権を含む)を管理、承認、または保証するものではなく、これらについて一切の責任を負いません。メッセージボードまたはフォーラムを通じて投稿された質問への回答として提供された投稿、または Salesforce またはプログラムに関する質問を含む質問への回答を主張する投稿は、一般的な情報提供を目的として提供されており、特定の質問への回答として依拠すべきものではありません(回答が「ベスト」回答としてマークされている場合や類似の資格が付与されている場合でも)。特定の質問への回答については、必ず Salesforce サポートにお問い合わせください。Salesforce は投稿内容について一切の管理権限を有せず、第三者による投稿内容の利用または誤用(配布を含む)について一切の責任を負いません。
ご質問がある場合は、当社の Trailblazer コミュニティの知見を活用してください:
https://trailhead.salesforce.com/trailblazer-community/feed
004980315

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.