DATE_PART 関数
DATE_PART は式から日付部分の値を抽出します。DATE_PART は PGDATE_PART 関数のシノニムです。
構文
DATE_PART(datepart, {date|timestamp})
引数
- datepart
-
関数が実行される日付の値の特定部分 (例: 年、月、または日) の識別子リテラルまたは文字列。詳細については、「日付関数またはタイムスタンプ関数の日付部分」を参照してください。
- {date|timestamp}
-
日付列、タイムスタンプ列、または暗黙的に日付またはタイムスタンプに変換される式。日付またはタイムスタンプの列または式には、datepart で指定された日付部分が含まれている必要があります。
戻り型
DOUBLE
例
DATE_PART 関数のデフォルトの列名は pgdate_part
です。
次の例の一部で使用されるデータの詳細については、「サンプルデータベース」を参照してください。
次の例では、タイムスタンプリテラルから分を見つけます。
SELECT DATE_PART(minute, timestamp '20230104 04:05:06.789');
pgdate_part ----------- 5
次の例では、タイムスタンプリテラルから週番号を見つけます。週番号の計算は、ISO 8601 標準に従います。詳細については、Wikipedia の「ISO 8601
SELECT DATE_PART(week, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 18
次の例では、タイムスタンプリテラルから日付を見つけます。
SELECT DATE_PART(day, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 2
次の例では、タイムスタンプリテラルから曜日を見つけます。曜日番号の計算は、日曜日から始まる 0~6 の整数です。
SELECT DATE_PART(dayofweek, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 1
次の例では、タイムスタンプリテラルから世紀を見つけます。世紀の計算は、ISO 8601 標準に従います。詳細については、Wikipedia の「ISO 8601
SELECT DATE_PART(century, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 21
次の例は、タイムスタンプリテラルからミレニアムを検出します。ミレニアムの計算は、ISO 8601 標準に従います。詳細については、Wikipedia の「ISO 8601
SELECT DATE_PART(millennium, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 3
次の例は、タイムスタンプリテラルからマイクロ秒を検出します。マイクロ秒の計算は、ISO 8601 標準に従います。詳細については、Wikipedia の「ISO 8601
SELECT DATE_PART(microsecond, timestamp '20220502 04:05:06.789');
pgdate_part ----------- 789000
次の例では、日付リテラルから月を見つけます。
SELECT DATE_PART(month, date '20220502');
pgdate_part ----------- 5
次の例は、DATE_PART 関数をテーブルの列に適用します。
SELECT date_part(w, listtime) AS weeks, listtime FROM listing WHERE listid=10
weeks | listtime ------+--------------------- 25 | 2008-06-17 09:44:54 (1 row)
完全形あるいは省略形の日付部分に名前を付けることができます。この場合、w は週を指します。
曜日の日付部分は、0~6 の整数を返します (0 は日曜日)。dow (曜日) とともに DATE_PART を使用し、土曜のイベントを表示します。
SELECT date_part(dow, starttime) AS dow, starttime FROM event WHERE date_part(dow, starttime)=6 ORDER BY 2,1;
dow | starttime -----+--------------------- 6 | 2008-01-05 14:00:00 6 | 2008-01-05 14:00:00 6 | 2008-01-05 14:00:00 6 | 2008-01-05 14:00:00 ... (1147 rows)