基本的な概念

3つのデータ型について

Salesforceで時間を扱う項目は主に3つ

  • 日付 ( 例:2020/01/01 )
  • 時間 ( 例:12:00:00:000 )
  • 日付/時間 ( 例:2020/01/01 12:00:00:000 )

上記の3つです。

結論から言うと、数式を使って計算をする場合(n日後の日付を表示させたい、プロセス/フローで日付項目を扱いたい)は
特にデータ型に注意して設定した方がいいです。理由は計算が面倒になるから。
日付だけでも事足りる場合は日付項目にした方が設定がかなり楽です。

日付/時間項目の計算

次に日付/時間項目で計算をした際の処理を確認しましょう。

計算例

作成日項目から計算を行う場合


CreateDate + 1 の場合 → 作成日から”1日後“の日付/時間が表示


単純に数字を足す場合は日数が加算されます。
これに演算を加えることで、時間・分・秒の加算も可能になります。

時間や分の計算を行う場合

1時間加算したい場合

CreateDate + 1/24 → 1日は24時間なので24で割り算

1分加算したい場合

CreateDate + 1/24/60 → 1日は24時間、1時間は60分なので2つの数字で割り算

上記が計算方法になります。簡単ですね。
ただし、この計算方法では問題点が出てくる場合があります。

計算時の問題点

①年数を足す、引く場合にうるう年が考慮されない

これは日付項目にも共通して言えることですが、先述の+1の計算方法だとうるう年の際に
計算がズレます。つまり、各要素(年・月・日・時間)を分解して計算する必要があります。

②日付項目との互換性がない

簡単に言うと日付項目と日付時間項目を使った計算ができないということです。
日付項目同士だと

日付項目(2020/01/10) – 日付項目(2020/01/01) = 9 (日間)

といったように日数の計算ができますが、この2者間では計算が行えません。
この場合も関数を利用してデータ型を変換する必要があります。

日付/時間項目に関する関数

・NOW関数

NOW関数を使えば、現在の日付/時間を返すことができます。
この関数は日付/時間項目のデフォルト値として使うケースが多いです。

・DATETIMEVALUE関数

DATETIMEVALUE関数を使えばテキスト形式で入力した値を日付/時間項目に変換できます。

DATETIMEVALUE(“2005-11-15 17:00:00”) は、日時値として November 15, 2005 5:00 PM GMT を表示します。

Salesforceヘルプより引用

このように “年度-月-日 時間:分:秒” の形式でテキストを()内に入力すれば日付時間形式で出力が可能になります。
年度の追加やデータ型の変換(日付→日付/時間)の時にはこの関数を利用しました。
この方法はややこしいので別記事で紹介します。

今回のまとめ

今回は日付/時間項目の扱いをまとめましたが、データ型の処理に対する理解は大切ですね。
特に計算をSalesforceの各所で使う場合には理解しておかないと詰んでしまうと思います。
私自身もまだまだ理解していない部分が多いのでもっと理解して行きたいと思います。