プログラマ38の日記

主にプログラムメモです。

Salesforce: SOQLやビューでよく使う日付の検索条件文字列

ビューやSOQLでは、当日を起点にして何日前や何日後といった条件を指定したい時があります。

 

たくさんある中でよく使う書き方のメモです。

 

ビューでの日付の検索条件文字列

Salesforceのリンクはこちらです。

日付の検索条件リテラル コメント
過去n日間 演算子を"次の文字列に一致する"にすると、n日前から今日までとなる。
演算子を">"にした場合は、当日との比較となる。
演算子を">="にした場合は、n日前との比較となる。
演算子を"<"にした場合は、n日前との比較となる。
演算子を"<="にした場合は、当日との比較となる。
翌n日間 演算子を"次の文字列に一致する"にすると、翌日からn日間までとなる。
演算子を">"にした場合は、n日後との比較となる。
演算子を">="にした場合は、翌日との比較となる。
演算子を"<"にした場合は、翌日との比較となる。
演算子を"<="にした場合は、n日後との比較となる。

 

SOQLでの日付の検索条件文字列

Salesforceのリンクはこちらです。

日付の検索条件リテラル コメント
LAST_N_DAYS:n 演算子を"="にすると、n日前から今日までとなる。
演算子を">"にした場合は、当日との比較となる。
演算子を">="にした場合は、n日前との比較となる。
演算子を"<"にした場合は、n日前との比較となる。
演算子を"<="にした場合は、当日との比較となる。
NEXT_N_DAYS:n 演算子を"="にすると、翌日からn日間までとなる。
演算子を">"にした場合は、n日後との比較となる。
演算子を">="にした場合は、翌日との比較となる。
演算子を"<"にした場合は、翌日との比較となる。
演算子を"<="にした場合は、n日後との比較となる。

 

ビューの検索条件文字列の、過去n日間と LAST_N_DAYS:n、翌n日間とNEXT_N_DAYS:nは同じ動きになり、図でまとめると次のようになります。

 last_n_days:2を例とした場合

f:id:crmprogrammer38:20170828233349p:plain

 

 next_n_days:2を例とした場合

f:id:crmprogrammer38:20170828233802p:plain

 

最後に

等号("次の文字列に一致する"、"=")で指定した場合は、対象の期間でフィルタしますが、大なり、小なりと大なりイコール、小なりイコールで検索の期間が異なるので注意が必要です。

特に、データ連携などをする際には、SOQLで"LAST_N_DAYS:n"はよく使います。オブジェクトにある共通項目の「作成日」、「更新日」、「System Modstamp」にはインデックスがあらかじめ作成されており、"LAST_N_DAYS:n"を指定するとインデックスを利用した実行プランが選択されるので、クエリタイムアウトの可能性は低くなります。

 

SOQLの"LAST_N_DAYS:n"は日での指定ですが、月での指定もできて、"LAST_N_MONTHS:n"となります。

同様に、ビューでの指定も"過去n日間"の日の指定に対し、"過去 n か月"と月で指定することができます。(月の指定の場合nの前後に半角スペースが必要になります)