この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

日付関数

SAQL クエリで日付を指定するには、日付関数と相対日付キーワードを使用します。

関数

相対日付は、ローカル時間ではなく UTC に対して相対的です。相対日付で返された日付は UTC 時間に基づく日付を反映するため、ローカル時間からのオフセットになる場合があります。

メモ

次の表は、SAQL 日付関数の一覧です。
日付関数 説明
date(year, month, day) 日付を返します。日付の 3 つのディメンションを年、月、日の順序で指定します。次に例を示します。
1date('OrderDate_Year', 'OrderDate_Month', 'OrderDate_Day')
dateRange(startArray_y_m_d, endArray_y_m_d) 固定日付範囲を返します。最初のパラメータは、範囲の開始日を指定する配列です。2 番目のパラメータは、範囲の終了日を指定する配列です。以下に例を示します。
1dateRange([1970, 1, 1], [1970, 1, 31])
daysBetween(date1, date2) 2 つの日付間の日数を整数で返します。
daysBetween() 関数は、ディメンションを直接引数として取ることはできません。toDate() および now(​) 関数を引数として渡します。
1q = foreach q generate daysBetween(​toDate(​OrderDate, “yyyy-MM-dd”​),
2   now()) as daysToShip;
1q = foreach q generate daysBetween(​​toDate(​​OrderDate, “yyyy-MM-dd”​​),
2   toDate(​​ShipDate, “yyyy-MM-dd”​​)) as daysToShip;
1q = foreach q generate daysBetween(​toDate(​OrderDate_​Year + “:” 
2   + OrderDate_​Month + “:” + OrderDate_​Day, “yyyy:MM:dd”​), toDate(​ShipDate_​Year + “:” 
3   + ShipDate_​Month + “:” + ShipDate_Day,​ “yyyy:MM:dd”​)) as daysToShip;
now() UTC で現在の日時を返します。この関数は、foreach ステートメントでのみ有効です。
1q = foreach q generate now() as now;

一般的に、この関数は daysBetween(​) および toString() 関数で使用されます。

toDate(string [,formatString]) 文字列を日付に変換します。formatString 引数が指定されていない場合は yyyy-MM-dd HH:mm:ss 形式が使用されます。
1q = foreach q generate toDate(​OrderDate);
1q = foreach q generate toDate(​OrderDate_​Day + \"-\" +​ OrderDate_​Month + \"-\" + ​OrderDate_​Year, \"dd-MM-yyyy\​");

多くの場合、この関数は daysBetween(​) または toString() に引数として渡されます。

toDate(epoch_seconds) UNIX のエポック秒を日付に変換します。epoch_seconds0 の場合、toDate(epoch_seconds)'1970-01-01 00:00:00' を返します。

この関数は、日付への期間の加算または日付からの期間の減算を行う場合に便利です。日付のタイムゾーンの違いを調整するときに時差を秒数で加算または減算すると、正しいローカル日付が算出されます。その時間がローカル子午線を越えている場合は、別の日付が算出されます。

たとえば、Current_Date'1970-01-01 00:00:00' からの秒数で表される現在日付の場合、関数 toDate(Current_Date - 8*3600) は 8 時間を減算します。実例については、「タイムゾーンの使用」を参照してください。

toString(date, formatString) 日付を文字列に変換します。
この関数は、最初の引数として toDate() または now(​) 関数を取る必要があります。
1q = foreach q generate toString(now(​), \"yyyy-MM-dd HH:mm:ss\") as ds1;

固定日付範囲の指定

固定日付の範囲を指定するには、dateRange() 関数を使用します。日付を年、月、日の順序で指定します。

1a = filter a by date('year', 'month', 'day') in [dateRange([1970, 1, 1], [1970, 1, 11])];

相対日付範囲の指定

相対日付範囲を指定するには、相対日付キーワードを含む配列で in 演算子を使用します。次に、4 つの例を示します。

1a = filter a by date('year', 'month', 'day') in ["1 year ago".."current year"];
2a = filter a by date('year', 'month', 'day') in ["2 quarters ago".."2 quarters ahead"];
3a = filter a by date('year', 'month', 'day') in ["4 months ago".."1 year ahead"];
4a = filter a by date('year', 'month', 'day') in ["2 fiscal_years ago".."current day"];
次の相対日付キーワードがあります。
  • current day
  • n day(s) ago
  • n day(s) ahead
  • current week
  • n week(s) ago
  • n week(s) ahead
  • current month
  • n month(s) ago
  • n month(s) ahead
  • current quarter
  • n quarter(s) ago
  • n quarter(s) ahead
  • current fiscal_quarter
  • n fiscal_quarter(s) ago
  • n fiscal_quarter(s) ahead
  • current year
  • n year(s) ago
  • n year(s) ahead
  • current fiscal_year
  • n fiscal_year(s) ago
  • n fiscal_year(s) ahead
次の表に、いくつかの相対日付キーワードの時間枠を示します。これらの時間枠の例では、現在の日付は 2014/12/16FiscalMonthOffeset 1 (会計年度は 2 月 1 日に開始) です。
相対日付値キーワード 開始日 終了日
current day 2014/12/16 00:00:00 2014/12/16 23:59:59
current quarter 2014/10/1 00:00:00 2014/12/31 23:59:59
1 year ago 2013/1/1 00:00:00 2013/12/31 23:59:59
1 month ahead 2015/1/1 00:00:00 2015/1/31 23:59:59
current fiscal_year 2014/2/1 00:00:00 2015/1/31 23:59:59
current fiscal_quarter 2014/11/1 00:00:00 2015/1/31 23:59:59
2 fiscal_quarters ahead 2015/5/1 00:00:00 2015/7/31 23:59:59
current day - 1 year 2013/12/16 00:00:00 2013/12/16 23:59:59
current fiscal_year + 5 days 2014/2/6 00:00:00 2014/2/6 23:59:59

標準会計期間のみがサポートされています。Salesforce ヘルプの「会計年度について」を参照してください。

メモ

日付の加算と減算

相対日付キーワードを使用して、日付の加算と減算を実行できます。

次に、加算と減算を使用した相対日付キーワードの時間枠の例を示します。これらの時間枠の例では、現在の日付は 2014/12/16FiscalMonthOffeset 1 (会計年度は 2 月 1 日に開始) です。

次のクエリでは、開始日は 2013-12-16 00:00:00 で終了日は無制限です。
1a= filter a by date('year', 'month', 'day') in ["current day - 1 year"..] ;
次のクエリでは、開始日は 2014-12-16 00:00:00 で終了日は 2017-3-31 23:59:59 です。
1a= filter a by date('year', 'month', 'day') in ["current day".."2 years ahead + 3 months"];
終了日は次のように決定されます。年は 2014 であるため 2 年後は 2016 になり、2016 年の終了時間は 2016-12-31 23:59:59 です。3 か月を加算すると、合計終了日は 2017-3-31 23:59:59 です。
次のクエリでは、開始日は 2014-2-6 00:00:00 で終了日は 2017-3-31 23:59:59 です。
1a= filter a by date('year', 'month', 'day') in ["current fiscal_year + 5 days".."2 years ahead + 3 months"];

無制限の相対日付範囲の使用

「List all opportunities closed after 12/23/2014 (2014 年 12 月 23 日より後に成立したすべての商談をリストする)」や「Get a list of marketing campaigns from before 04/2/2015 (2015 年 4 月 2 日より前のマーケティングキャンペーンのリストを取得する)」のようなクエリを作成するには、無制限の日付範囲を使用します。

次の例は無制限の相対日付範囲です。
1a = filter a by date('year','month','day') in [.."current month"];

次の例は無制限の固定日付範囲です。OrderDate の日付形式は yyyy-MM-dd です。
1q = filter q by OrderDate in [“2015-01-01”​..];

タイムゾーンの使用

toDate() 関数の実用的な用途は、Wave ダッシュボードでのタイムゾーンの変更を計算することです。次の JSON コードフラグメントでは、変換に computeExpression アクションを使用し、saqlExpression を使用して toDate() 関数をコールします。この方法により、ローカルまたは UTC の最も適切な日時をダッシュボードに表示できます。

1"Extract_Opportunity": {
2  "action": "computeExpression",
3  "parameters": {
4    "source": "Digest_Opportunity",
5    "mergeWithSource": true,
6    "computedFields": [
7     {
8      "name": "CreatedDateNew",
9      "type": "Date",
10      "format": "MM/dd/yyyy",
11      "saqlExpression": "toDate(CreatedDate_sec_epoch - 8*3600)"
12     }
13    ]
14  }
15},

この例は、既存の日付 CreatedDate_sec_epoch を取得し、8 時間を減算して新しい日付 CreateDateNew を作成しています。次の表に、この計算によって (形式が適用された) CreatedDateNew 日付がどのように変更されるかを示します。いずれの場合も、時間の変更に伴い日付も変更されています。

CreatedDate_sec_epoch CreatedDateNew
2015-11-03T06:49:25.00OZ 11/2/2015
2014-08-19T06:42:33.00OZ 8/18/2014
2014-09-28T03:12:25.00OZ 9/27/2014

詳細は、「computeExpression 変換」 トピックを参照してください。