EXTRACT関数は、dateTime値の一部分(曜日や月など)を抽出します。これが役に立つのは、データをタイムスタンプの一部分でフィルタリングまたはグルーピングする必要がある場合です。たとえば、月曜日の売上合計を計算するときです。
<ExtractExpr> ::= EXTRACT(<expr>,<DateTimeUnit>) <DateTimeUnit> ::= MILLISECOND | SECOND | MINUTE | HOUR | DAY_OF_WEEK | DAY_OF_MONTH | DAY_OF_YEAR | DATE | WEEK | MONTH | QUARTER | YEAR | JULIAN_DAY_NUMBER
日時の構成要素 | 戻り値の範囲 | メモ |
---|---|---|
MILLISECOND | (0 - 999) | |
SECOND | (0 - 59) | |
MINUTE | (0 - 59) | |
HOUR | (0 - 23) | |
DAY_OF_WEEK | (1 - 7) | 週の中での日の位置を返します。日曜日が1です。 |
DAY_OF_MONTH (DATE) | (1 - 31) | |
DAY_OF_YEAR | (1 - 366) | |
WEEK | (1 - 53) | 年の中での週の位置を返します。第1週はその年の最初の日に開始します。 |
MONTH | (1 - 12) | |
QUARTER | (1 - 4) | 四半期は1月、4月、7月、10月に開始します。 |
YEAR | (-9999 - 9999) | |
JULIAN_DAY_NUMBER | (0 - 5373484) | タイムスタンプと紀元前4713年11月24日午前0時との間にある日の数(1日未満の端数は含まない)を表す整数を返します。 |
EXTRACT("TimeStamp", MILLISECOND) = 104 EXTRACT("TimeStamp", SECOND) = 12 EXTRACT("TimeStamp", MINUTE) = 35 EXTRACT("TimeStamp", HOUR) = 11 EXTRACT("TimeStamp", DATE) = 13 EXTRACT("TimeStamp", WEEK) = 41 EXTRACT("TimeStamp", MONTH) = 10 EXTRACT("TimeStamp", QUARTER) = 4 EXTRACT("TimeStamp", YEAR) = 2015 EXTRACT("TimeStamp", DAY_OF_WEEK) = 5 EXTRACT("TimeStamp", DAY_OF_MONTH) = 13 EXTRACT("TimeStamp", DAY_OF_YEAR) = 286 EXTRACT("TimeStamp", JULIAN_DAY_NUMBER) = 2455848
RETURN Quarters AS SELECT SUM(Amount) AS Total ARB(TRUNC(TimeStamp, QUARTER)) AS Qtr FROM SaleState WHERE EXTRACT(TimeStamp,DAY_OF_WEEK) = 2 GROUP BY Qtr
DEFINE ClaimsWithAge AS SELECT ARB(FLOOR((EXTRACT(TO_TZ(CURRENT_TIMESTAMP,claim_tz),JULIAN_DAY_NUMBER)- EXTRACT(TO_TZ(claim_ts,claim_tz),JULIAN_DAY_NUMBER))/7)) AS AgeInWeeks, COUNT(1) AS Count FROM SaleState GROUP BY AgeInWeeks HAVING AgeInWeeks < 2 ORDER BY AgeInWeeks; RETURN Result AS SELECT CASE AgeInWeeks WHEN 0 THEN 'Past 7 Days' WHEN 1 THEN 'Prior 7 Days' ELSE 'Other' END AS Label, Count FROM ClaimsWithAge