dateTime値を切り捨てるためのTRUNCの使用

TRUNC関数を使用すると、dateTime値をより粗い単位で切り捨てることができます。

これが役に立つのは、たとえば、文の結果データを、dateTime属性を使用して四半期ごとにグルーピングする場合です。

TRUNC関数の構文は次のとおりです。
<TruncExpr>     ::=  TRUNC(<expr>,<DateTimeUnit>)
<dateTimeUnit>  ::=  SECOND | MINUTE | HOUR |
                     DATE | WEEK | MONTH | QUARTER | YEAR
                     DAY_OF_WEEK | DAY_OF_MONTH | DAY_OF_YEAR
                     JULIAN_DAY_NUMBER
注意: WEEKを指定すると、切捨ての基準は最も近い過去の日曜日になります。
たとえば、dateTime型の属性TimeStampの値が10/13/2011 11:35:12.000を表しているとします。次のリストに、TRUNC演算子を使用してTimeStamp値を各詳細レベルで切り捨てたときの結果を示します。ここに示した値は、読みやすい形式で表示されています。実際の値では、Endeca標準のdateTime形式が使用されます。
TRUNC("TimeStamp", SECOND)            = 10/13/2011 11:35:12.000
TRUNC("TimeStamp", MINUTE)            = 10/13/2011 11:35:00.000
TRUNC("TimeStamp", HOUR)              = 10/13/2011 11:00:00.000
TRUNC("TimeStamp", DATE)              = 10/13/2011 00:00:00.000
TRUNC("TimeStamp", WEEK)              = 10/09/2011 00:00:00.000
TRUNC("TimeStamp", MONTH)             = 10/01/2011 00:00:00.000
TRUNC("TimeStamp", QUARTER)           = 10/01/2011 00:00:00.000
TRUNC("TimeStamp", YEAR)              = 01/01/2011 00:00:00.000
TRUNC("TimeStamp", DAY_OF_WEEK)       = 10/13/2011 00:00:00:000
TRUNC("TimeStamp", DAY_OF_MONTH)      = 10/13/2011 00:00:00:000
TRUNC("TimeStamp", DAY_OF_YEAR)       = 10/13/2011 00:00:00:000
TRUNC("TimeStamp", JULIAN_DAY_NUMBER) = 10/13/2011 00:00:00:000
これは、この機能の使用法の単純な例です。次の文では、Amount属性の合計値を四半期でグルーピングします。四半期を取得するには、TRUNC演算をTimeStamp属性に対して使用します。
RETURN Quarters AS
SELECT SUM(Amount) AS Total,
       ARB(TRUNC(TimeStamp, QUARTER)) AS Qtr
GROUP BY Qtr