Salesforce 数式 うるう年のロジック
2102 ワード
SFDCの数式:うるう年の計算ロジック
【使用方法】ある日付を基準に、n年後の日付を自動算出する時に使用。
ex) 契約開始日(ContractDate
)を入力したら、自動的にn年後(addYear
)の契約更新日を算出する。
うるう年の2月29日が入力されたとき、n年後が平年である場合は3月1日を算出する。
変数 | データ型 | 内容 |
---|---|---|
ContractDate |
日付型 | 基準日の項目 |
addYear |
数値型 | 基準日からプラスする年数 |
IF(
AND(
MONTH(ContractDate) = 2,
DAY(ContractDate) = 29,
OR(
MOD( YEAR(ContractDate), 400 ) = 0,
AND(
MOD( YEAR(ContractDate), 4 ) = 0,
MOD( YEAR(ContractDate), 100 ) != 0
)
)
),
DATE( YEAR(ContractDate) + addYear,3,1),
DATE( YEAR(ContractDate) + addYear, MONTH(ContractDate), DAY(ContractDate))
)
【memo】
うるう年のルール
①. 4の倍数になる年=うるう年
②. 100の倍数になる年で400で割り切れない年=うるう年でない
つまり、
「400で割り切れる年」
または
「4で割り切れる年 かつ 100で割り切れない年」
は、うるう年になります。
うるう年を考慮せず、日付算出ロジック
DATE( YEAR(ContractDate) + addYear, MONTH(ContractDate), DAY(ContractDate)
だけを数式に書くと、
入力した日付がうるう年であり、算出した日付がうるう年でない場合、存在しない日付となり、
「数式なのに日付が出力されない!」となりますのでご注意。(⌒∇⌒)
以上
追記:
更新日とかって大体、契約日-1 なんですよね。。
その場合はIF文の分岐結果部分を以下のように書き換えるだけ。
DATE( YEAR(ContractDate) + addYear,3,1) -1,
DATE( YEAR(ContractDate) + addYear, MONTH(ContractDate), DAY(ContractDate)) -1
Author And Source
この問題について(Salesforce 数式 うるう年のロジック), 我々は、より多くの情報をここで見つけました https://qiita.com/mikupon__/items/fcbb0426642a98c19838著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .