2022/07/26

SalesforceのDateDiffって何?作成方法などサンプルを用いてご紹介します

 
  

SalesforceにおけるDateDaffとは?

DateDiffとは、2つの日付の時間差のことです。期間を決めた場合は、期間の間隔の差になります。日数の差を決めた場合は日数の差となります。 例えば、SalesforceでDateDiffを使用する際、商談が完了するまでどのくらい期間がかかったのか出すプログラムや次のタスクや予定までの期間を出すのに使用されることが多いです。商談が何ヶ月前、何日前に行われたかを出すのにも使います。 つまり、時間や日数など何かしらの数字の差に関わるものには使用されていることが多い関数となります。

SalesforceにおけるDateDiffの概要

SalesforceでDateDiffを使用するには、いくつか書き方があります。今回は2つほどDateDiffに関する構文を紹介しましょう。

DateDiffの2種類の構文

date_diff(datepart,date1,date2)
datepartでは、時間を測定するときの間隔を決めます。SalesforceでDateDiffのdatepartの決められる間隔の例は、year、month、quarter、day、week、hour、minute、secondなどがあります。 年単位や月単位、日にちの単位、週単位、時間、分、秒などいろんな期間で計算が可能です。単位が多いのでさまざまな場面で活用が可能です。 date1は、比較をするための最初の日付を表します。日付を出力するためにDateDiff以外の他の関数を呼び出すこともある部分です。date2は、比較するための期間の終了日です。日付を出力する際に必要なDateDiff以外の関数も使用できます。 また、DateDiffには以下の構文があります。
DateDiff(date1, date2, string)
date1は比較の最初の日付であり、出力のためにDateDiff以外の関数を使用できます。Date2は終了日の日付で、出力に別関数の使用が可能です。date1もdate2もMM/dd/yyyyやYYYY-MM-DD形式を使うことができます。 stringは期間の測定の間隔を指定できます。使うことのできる値は、yearの「Y」、monthの「M」、dayの「D」、hourの「H」、minuteの「M」です。「Q」は日付が属する四半期の差になります。 DateDiffは、基本的には比べたい2つの日付とyyyyやmm、ddなど年単位、月単位、日、時間など期間の測定の間隔を使います。用意する日付は、開始日と終了日になるので構文に当てはめて使用するといいでしょう。

DateDiffの使用例

Salesforceで使用するDateDiff関数の使用例について紹介します。Salesforceでそれぞれの商談に何週間かかったか、商談をどのくらい前に完了させたのかという例です。date_diff(datepart,date1,date2)の構文で説明します。 まずは、date_diff(datepart,date1,date2)の基本的な書き方のサンプルコードです。
date_diff(""year"", toDate(""31-12-2015"", ""dd-MM-yyyy""), toDate(""1-1-2016"", ""dd-MM-yyyy""))
日付-月-年の書き方で2つの日付が何年差があるのかを求めます。基本的にDateDiffは数字の引き算に近いです。日付の引き算だということを考えて、以下の例を見て考えてみましょう。MM/dd/yyyyの書き方でも同じ結果が出ます。以下サンプルコードです。
date_diff(""year"", toDate(""12-31-2015"", ""MM/dd/yyyy""), toDate(""1-1-2016"", ""MM/dd/yyyy""))
「Salesforceでそれぞれの商談に何週間かかったか」の使用例から説明します。それぞれの商談の計算に最初にweekを使用して、時間を測定する間隔を決めましょう。以下、サンプルコードになります。
q = load ""DTC_Opportunity"";
q = foreach q generate date_diff(""week"", toDate(Created_Date_sec_epoch), toDate(Close_Date_sec_epoch) ) as 'Weeks to Close';
q = order q by 'Weeks to Close';
次に商談をどのくらい前に完了させたのかという例を紹介します。それぞれの商談に何ヶ月間かかったのか、時間を測定する間隔をmonthで指定し計算するのです。date2にあたる終了日にはnow()を使用して現在の日付を表しましょう。以下、サンプルコードになります。
q = load ""DTC_Opportunity"";
q = foreach q generate date_diff(""month"", toDate(Close_Date_sec_epoch), now() ) as 'Months Since Close';
q = order q by 'Months Since Close';
DateDiff(date1, date2, string)を使用した例も紹介します。2つの日付の差を求めるサンプルコードになります。日付はあらかじめ用意するサンプルコードです。
dateDiff(01/01/18, 03/05/18, ""MM"")
01/01/18は1月1日18時を表し、03/05/18は、3月5日18時という意味です。MMは日付の月の部分になります。よって、2つの日付の差が2になります。

SalesforceにおけるDateDiffの注意点

SalesforceにおけるDatediffにはいくつか注意点があります。例を交えてご紹介します。 DateDiffは、dateDiff(date1,date2,strng)であっても、date_diff(datepart,date1,date2)であっても、DateDiff(date1,date2,strng)のいずれかの構文であっても表すことが可能です。 どれも2つの日付間の時間差を、年、月、週、日、時間、分、秒の単位で問いに対する答えを出すことができます。しかし、例外的に答えが負の数値になる場合があります。それは、date1の値である最初に指定する日付が終了日よりも後の日付の場合です。 date_diff(datepart,date1,date2)では、foreachをApexのプログラミングの構成単位となるステートメントで使う必要があります。date_diff(datepart,date1,date2)では、group by、order by、filterは使用できません。 最長9,223,372,036,854,775,807 ナノ秒まで時間を返すことができ、日にちでいえば106,751.99 日まで測定することができます。ただし、うるう年は測定が難しいでしょう。 DateDiffはさまざまな書き方があり、商談の期間の測定や納期や次の予定までの時間など使う場面がありますが、注意点も押さえておきましょう。

SalesforceのDateDiffを活用しよう

今回は、SalesforceのDateDiffについて紹介しました。 商談や納期までの期間やどれほど前に行ったかなど調べたいときや、次の予定までの期間や予定の締め切りまでの期間を計算したいときなど2つの日付の差を出したいときに使用することがあります。仕事の効率化を図るためにもぜひ活用できるようにしましょう。]]>

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】