カテゴリ:

日付と時刻の関数

YEAR* / DAY* / WEEK* / MONTH / QUARTER

日付またはタイムスタンプから対応する日付部分を抽出します。

これらの関数は、同等の日付部分で DATE_PART (または EXTRACT)関数を使用する代替手段です( サポートされている日付と時刻の部分 を参照)。

こちらもご参照ください:

HOUR / MINUTE / SECOND

構文

YEAR( <date_or_timestamp_expr> )

YEAROFWEEK( <date_or_timestamp_expr> )
YEAROFWEEKISO( <date_or_timestamp_expr> )

DAY( <date_or_timestamp_expr> )

DAYOFMONTH( <date_or_timestamp_expr> )
DAYOFWEEK( <date_or_timestamp_expr> )
DAYOFWEEKISO( <date_or_timestamp_expr> )
DAYOFYEAR( <date_or_timestamp_expr> )

WEEK( <date_or_timestamp_expr> )

WEEKOFYEAR( <date_or_timestamp_expr> )
WEEKISO( <date_or_timestamp_expr> )

MONTH( <date_or_timestamp_expr> )

QUARTER( <date_or_timestamp_expr> )

使用上の注意

関数名

入力日付/タイムスタンプから抽出された日付部分

可能な値

YEAR

有効な年(例:2017)

YEAROFWEEK [1]

抽出された週が属する年

有効な年(例:2017)

YEAROFWEEKISO

ISO セマンティクスを使用することを除いて、 YEAROFWEEKと同じ

有効な年(例:2017)

DAY , DAYOFMONTH

月の日付(数値)

1~31

DAYOFWEEK [1]

週の日付(数値)

0~7

DAYOFWEEKISO

ISO セマンティクスを使用することを除いて、 DAYOFWEEKと同じ

1~7

DAYOFYEAR

年の日付(数値)

1~366

WEEK 、 WEEKOFYEAR [1]

年の週(数値)

1~54

WEEKISO

ISO セマンティクスを使用することを除いて、 WEEKと同じ

1~53

MONTH

年の月(数値)

1~12

QUARTER

年の四半期(数値)

1~4

[1] WEEK_OF_YEAR_POLICY および/または WEEK_START セッションパラメーターに設定された値によって示される結果です。

ISO セマンティクスとパラメーターの詳細については、 カレンダーの週と平日 をご参照ください。

以下は、関数 YEARMONTHDAYDAYOFWEEKDAYOFYEARQUARTER の使用を示しています。

SELECT 
       '2013-05-08T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       YEAR(tstamp) AS "YEAR", 
       QUARTER(tstamp) AS "QUARTER OF YEAR",
       MONTH(tstamp) AS "MONTH", 
       DAY(tstamp) AS "DAY",
       DAYOFMONTH(tstamp) AS "DAY OF MONTH",
       DAYOFYEAR(tstamp) AS "DAY OF YEAR";
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
| TSTAMP                  | YEAR | QUARTER OF YEAR | MONTH | DAY | DAY OF MONTH | DAY OF YEAR |
|-------------------------+------+-----------------+-------+-----+--------------+-------------|
| 2013-05-08 23:39:20.123 | 2013 |               2 |     5 |   8 |            8 |         128 |
+-------------------------+------+-----------------+-------+-----+--------------+-------------+

以下は、関数 WEEKWEEKISOWEEKOFYEARYEAROFWEEKYEAROFWEEKISO の使用方法を示しています。セッションパラメーター WEEK_OF_YEAR_POLICY は、年の最初の週がその年の1月1日を含む週であることを示すように設定されています。

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 1;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       WEEK(tstamp) AS "WEEK",
       WEEKISO(tstamp) AS "WEEK ISO",
       WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
       YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
       YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP                  | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 |    1 |       53 |            1 |         2016 |             2015 |
+-------------------------+------+----------+--------------+--------------+------------------+

以下は、関数 WEEKWEEKISOWEEKOFYEARYEAROFWEEKYEAROFWEEKISO の使用も示しています。セッションパラメーター WEEK_OF_YEAR_POLICY は、年の最初の週がその年から少なくとも4日を含む年の最初の週であることを示すように設定されます。(例えば、2010年12月26日から2011年1月1日までの週は、2011年の最初の週ではなく2010年の最後の週と見なされます。2011年1月1日が含まれていますが、2011年は週の半分未満だからです)

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 0;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       WEEK(tstamp) AS "WEEK",
       WEEKISO(tstamp) AS "WEEK ISO",
       WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
       YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
       YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP                  | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 |   53 |       53 |           53 |         2015 |             2015 |
+-------------------------+------+----------+--------------+--------------+------------------+

以下は、関数 DAYOFWEEK および DAYOFWEEKISO の使用方法を示しています。セッションパラメーター WEEK_START は、週が日曜日に始まることを示すように設定されています。

ALTER SESSION SET WEEK_START = 7;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           7 |               6 |
+-------------------------+-------------+-----------------+

以下は、関数 DAYOFWEEK および DAYOFWEEKISO の使用方法を示しています。セッションパラメーター WEEK_START は、週が月曜日に始まることを示すように設定されています。

ALTER SESSION SET WEEK_START = 0;
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           6 |               6 |
+-------------------------+-------------+-----------------+

その他の例については、 日付とタイムスタンプの使用 をご参照ください。

週関連の関数の詳細な例(DAYOFWEEK、 WEEK、 WEEKOFYEAR、 YEAROFWEEKなど)については、 カレンダーの週と平日 をご参照ください。