EXTRACT 関数 - Amazon Redshift

EXTRACT 関数

EXTRACT 関数は、TIMESTAMP 値または式、TIME、または TIMETZ から、日、月、年、時、分、秒、ミリ秒、マイクロ秒などの日付や時刻の部分を返します。

構文

EXTRACT ( datepart FROM { TIMESTAMP 'literal' | timestamp | time | timetz } )

引数

datepart

有効な値については、「日付関数またはタイムスタンプ関数の日付部分」を参照してください。

literal

一重引用符で囲まれ、先頭に TIMESTAMP キーワードがあるタイムスタンプの値。

timestamp | times | timestz

TIMESTAMP、TIMESTAMPTZ、TIME または TIMETZ 列、あるいは TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIME、または TIMETZ に暗黙的に変換される式。

戻り型

引数が TIMESTAMP、TIME、または TIMETZ の場合は INTEGER

引数が TIMESTAMPTZ の場合は DOUBLE PRECISION

タイムスタンプ列の例

次の例では、支払価格が 10,000 USD 以上であった販売の週の数を判定します。

select salesid, extract(week from saletime) as weeknum from sales where pricepaid > 9999 order by 2; salesid | weeknum --------+--------- 159073 | 6 160318 | 8 161723 | 26 (3 rows)

次の例では、リテラルタイムスタンプの値から分の値を返します。

select extract(minute from timestamp '2009-09-09 12:08:43'); date_part ----------- 8 (1 row)

時間列の例

次のテーブルの TIME_TEST の例には、3 つの値が挿入された列 TIME_VAL (タイプ TIME) があります。

select time_val from time_test; time_val --------------------- 20:00:00 00:00:00.5550 00:58:00

次の例は、各 time_val から分を抽出します。

select extract(minute from time_val) as minutes from time_test; minutes ----------- 0 0 58

次の例は、各 time_val から時間を抽出します。

select extract(hour from time_val) as hours from time_test; hours ----------- 20 0 0

次の例では、リテラル値からミリ秒を抽出します。

select extract(ms from time '18:25:33.123456'); date_part ----------- 123

TIMETZ 列の例

次のテーブルの TIMETZ_TEST の例には、3 つの値が挿入された列 TIMETZ_VAL (タイプ TIMETZ) があります。

select timetz_val from timetz_test; timetz_val ------------------ 04:00:00+00 00:00:00.5550+00 05:58:00+00

次の例では、各 timetz_val から時間を抽出します。

select extract(hour from timetz_val) as hours from time_test; hours ----------- 4 0 5

次の例では、リテラル値からミリ秒を抽出します。抽出が処理される前には、リテラルは UTC に変換されません。

select extract(ms from time '18:25:33.123456 EST'); date_part ----------- 123