月末日を求める数式でハマった件

入力された日付項目を基にその月末日を求める数式を作成したところ、12月だけうまく動きませんでした。

最初に設定した数式

単純に月に1を足して日付を作成すればいいと思ってました。

// 翌月1日に変換して、そこから1日引く
DATE(YEAR(inputDate__c), MONTH(inputDate__c) + 1, 1) - 1

f:id:sweaty:20191126224808p:plain
12月末日が計算できない

うまく表示されませんでした。上記の数式だと12月は対応できないことを知らなかったです。

修正した数式

入力日付が12月だった場合のみ、処理を分けました。

// 12月だけ処理を分ける
IF(
    MONTH(inputDate__c) = 12,
    DATE(Year(inputDate__c) + 1, 1, 1) - 1,
    DATE(Year(inputDate__c), MONTH(inputDate__c) + 1, 1) -1
)

f:id:sweaty:20191126224923p:plain
12月末日もOK

12月だけは強制的に翌年1月1日にして、-1日するという対応で解消できました。

同じようにハマった方がいれば参考までに。