extract 関数

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

field の source を返します。

注

TIMESTAMP (TIMESTAMP_LTZ) からフィールドを抽出する場合、結果はセッションのタイムゾーンに基づいています。

構文

extract(field FROM source)

引数

  • field: 抽出する source の部分を選択するキーワード。
  • source: DATE、 TIME、 TIMESTAMP、 TIMESTAMP_NTZ、または INTERVAL 式。

返品

field が SECOND の場合は、DECIMAL(8, 6) です。 その他のすべてのケースで、INTEGER。

field が source または DATE のとき、TIMESTAMP にサポートされている値:

  • YEAR、Y、YEARS、YR、YRS: 年フィールド
  • YEAROFWEEK: datetime が属する ISO 8601 週番号付け年。 たとえば、2005-01-02 は 2004 年の第 53 週の一部なので、結果は 2004 です
  • QUARTER、QTR: datetime が属する年の四半期 (1 - 4)
  • MONTH、MON、MONS、MONTHS: 月フィールド (1 - 12)
  • WEEK、W、WEEKS: ISO 8601 週ベースの年の数。 週の始まりは月曜日で、3 日より長い最初の週が第 1 週であるとみなされます。 ISO 週番号付けシステムでは、1 月の初めの日付を前年の第 52 週または第 53 週に含め、12 月末の日付を次の年の最初の週の一部にすることができます。 たとえば、2005-01-02 は 2004 年の第 53 週の一部ですが、2012-12-31 は 2013 年の最初の週の一部です。
  • DAY、D、DAYS: 月フィールドの日 (1 - 31)
  • DAYOFWEEK、DOW: 日曜日 (1) から土曜日 (7) の datetime の曜日
  • DAYOFWEEK_ISO、DOW_ISO: 月曜日 (1) から日曜日 (7) の datetime の曜日、ISO 8601 ベース
  • DOY: 年初から数えた日 (1 - 365/366)
  • HOUR、H、HOURS、HR、HRS: 時間フィールド (0 - 23)
  • MINUTE、M、MIN、MINS、MINUTES: 分フィールド (0 - 59)
  • SECOND、S、SEC、SECONDS、SECS: 秒フィールド、小数部を含む

sourceがTIMEされている場合にサポートされるfieldの値:

  • HOUR、H、HOURS、HR、HRS: 時間フィールド (0 - 23)
  • MINUTE、M、MIN、MINS、MINUTES: 分フィールド (0 - 59)
  • SECOND、S、SEC、SECONDS、SECS: 秒フィールド、小数部を含む

field が source のときに INTERVAL でサポートされている値 (大文字と小文字を区別しない):

  • YEAR、Y、YEARS、YR、YRS: 合計月数 / 12
  • MONTH、MON、MONS、MONTHS: 合計月数 % 12
  • DAY、D、DAYS: 間隔の日数部分
  • HOUR、H、HOURS、HR、HRS: マイクロ秒に含まれる時間数
  • MINUTE、M、MIN、MINS、MINUTES: マイクロ秒から時間を差し引いて残った分数
  • SECOND、S、SEC、SECONDS、SECS: マイクロ秒から時間と分を差し引いて残った秒数 (小数部分あり)

曜日の 3 文字の頭字語を返すには、dayname 関数を使用します。

例

> SELECT extract(YEAR FROM TIMESTAMP '2019-08-12 01:00:00.123456');
 2019

> SELECT extract(week FROM TIMESTAMP'2019-08-12 01:00:00.123456');
 33

> SELECT extract(DAY FROM DATE'2019-08-12');
 12

> SELECT extract(SECONDS FROM TIMESTAMP'2019-10-01 00:00:01.000001');
 1.000001

> SELECT extract(HOUR FROM TIME'10:30:45');
 10

> SELECT extract(MONTHS FROM INTERVAL '2-11' YEAR TO MONTH);
 11

> SELECT extract(SECONDS FROM INTERVAL '5:00:30.001' HOUR TO SECOND);
 30.001000