SOQL 日付関数

来源:互联网 发布:excel抓取多页网页数据 编辑:程序博客网 时间:2024/06/09 20:11

salesforceで用意されている日付関数にはとても便利なものが多い。
知らないとクエリー結果に対してApexでゴリゴリと処理をおこなう必要があったり、逆に知っていればコードの可読性は向上し、ガバナ制約の回避につなげることもできる。
現時点(Spring'14)で使用可能な日付関数をメモしておく。

[SOQL:日付関数]
CALENDAR_MONTH() :date 項目のカレンダー月を表す数値を返します。
CALENDAR_QUARTER() :date 項目の四半期を表す数値を返します。
CALENDAR_YEAR() : date 項目のカレンダー年を表す数値を返します。
DAY_IN_MONTH() :日付項目の月の何日目かを表す数値を返します。
DAY_IN_WEEK() :date 項目の曜日を表す数値を返します。
DAY_IN_YEAR() :date 項目の年の何日目かを表す数値を返します。
DAY_ONLY() :dateTime 項目の日付部分を表す日付を返します。
FISCAL_MONTH() :date 項目の会計年度の月を表す数値を返します。
FISCAL_QUARTER() :date 項目の会計年度の四半期を表す数値を返します。
FISCAL_YEAR() :date 項目の会計年度を表す数値を返します。
HOUR_IN_DAY() : dateTime 項目の時間を表す数値を返します。
WEEK_IN_MONTH() :date 項目の月の何週目かを表す数値を返します。
WEEK_IN_YEAR() :date 項目の年の何週目かを表す数値を返します。

• クエリに GROUP BY 句が含まれていない場合でも、WHERE 句で日付関数を使用して結果を絞り込むことができます。次のクエリは 2009 年のデータを返します。

SELECT CreatedDate, AmountFROM OpportunityWHERE CALENDAR_YEAR(CreatedDate) = 2009

• 日付関数の結果を WHERE 句の 日付リテラルと比較することはできません。次のクエリは機能しません。

SELECT CreatedDate, AmountFROM OpportunityWHERE CALENDAR_YEAR(CreatedDate) = THIS_YEAR

• GROUP BY 句にも含めない限り、SELECT 句で日付関数を使用することはできません。日付関数で使用される項目が date 項目の場合は例外があります。GROUP BY句では日付関数の代わりに、date 項目を使用できます。
これは、dateTime 項目に対しては機能しません。次のクエリは、CALENDAR_YEAR(CreatedDate) が GROUP BY句に含まれていないため機能しません。

SELECT CALENDAR_YEAR(CreatedDate), AmountFROM Opportunity

次のクエリは、CloseDate という date 項目が GROUP BY 句に含まれているため機能します。これが、CreatedDate などの dateTime 項目の場合には機能しません。

SELECT CALENDAR_YEAR(CloseDate)FROM OpportunityGROUP BY CALENDAR_YEAR(CloseDate)

以上

0 0
原创粉丝点击