1. TOP
  2. Zoho CRM
  3. 2つの日付を比較する「Datecomp」関数を使ってみる!

2つの日付を比較する「Datecomp」関数を使ってみる!

Zoho CRM

|

日付の比較をしたいということを、ゾーホージャパンのサポートH氏にメールをすると、「Datecomp」という関数をおしえてくれた。

数式項目内で日付の項目を比較するには、Datecompという関数を使用する必要があります。
Datecompという関数は、2つの日付を比べ差分を分で返す関数です。
1つめの引数が大きい場合プラスの値、1つめの引数が小さい場合マイナスの値を返します。

スクリーンショット 2015-05-25 17.27.23

If(Datecomp(${Leads.直近},${Leads.直近2})>0
,${Leads.直近},${Leads.直近2})
  • 直近と直近2という日付項目を比較した場合、
  • なぜ、これで新しい方の日付の値が返るのか、まだわからない。。

そんなこんなで、H氏からめちゃくちゃ丁寧な返信メールが届く。

オレ質問:

If(Datecomp(${Leads.直近},${Leads.直近2})
ここでは、Datecompで、直近と直近2の「差分」比較しているのでしょうか?

Datecompで「直近」と「直近2」の差分を算出しています。
この差分がプラスであれば「直近」のほうが後の日付となり、差分がマイナスであれば「直近2」のほうが後の日付となります。
例:直近が2015/05/25で、直近2が2015/05/14の場合、Datecompが返す値はプラスです。

オレ質問:

If(Datecomp(${Leads.直近},${Leads.直近2}) > 0
上記で比較した値の「差分」が、0よりも大きければ、という意味合いでしょうか?

はい。その通りです。
差分が0よりも大きければ、直近を返し、差分が0よりも小さければ直近2を返しています。

残念ながら3つ以上の日付を比較する関数はありません。
そのため次のように、If関数を入れ子にして記述する必要があります。
If(Datecomp(If(Datecomp(${Leads.直近}, ${Leads.直近2}) > 0, ${Leads.直近}, ${Leads.直近2}), ${Leads.直近3}) > 0, If(Datecomp(${Leads.直近}, ${Leads.直近2}) > 0, ${Leads.直近}, ${Leads.直近2}), ${Leads.直近3})
比較する日付の項目が長くなるに連れて数式が長くなっていきます‥

If( Datecomp(If(Datecomp(${Leads.直近}, ${Leads.直近2}) > 0, ${Leads.直近}, ${Leads.直近2}), 
  ${Leads.直近3}) > 0,  
    If(Datecomp(${Leads.直近}, ${Leads.直近2}) > 0, 
      ${Leads.直近}, ${Leads.直近2}),  ${Leads.直近3})

上記は、3つ以上の日付を比較する時に使うコード。ぐちゃぐちゃしてよくわからないので、H氏にさらに聞いてみた。

スクリーンショット 2015-06-01 13.16.52

まとめ、

要するに、「直近」-「直近2」をやって、+だったら「直近」、−だったら「直近2」を返す。この判定をするために、「0」を基準にするみたい。わかれば、そうかって、感じだけど、分からないとなんのことかちんぷんかんぷん。。