「2020-09-01」のようなdate型、またタイムスタンプ型の値から「2020」や「9」のように年のみ、月のみなど特定の単位の値だけ取り出したい場合がある。
こういった場合、extract関数を使うことで簡単に年月日を取得することができる。
例えば、アクセスログを管理するテーブルから2014年のアクセスログのみを取得する場合、以下のクエリとなる。
SELECT
request_time
FROM
access_log
WHERE
extract(year from request_time) = 2014
;

extract関数の引数に「year」を指定して年のみを取り出し、2014に一致するデータのみをWHERE句で条件指定している。
extract関数で取得した値はdate型と違い、普通の数値として扱えるのでこのように条件の一部として使ったり、計算に使用したりもできる。
また、年月日以外にも時間や数値形式の曜日(0〜6)を取得することもできる。
extract(year from datetime) | 年 |
extract(month from datetime) | 月 |
extract(day from datetime) | 日 |
extract(hour from datetime) | 時 |
extract(minute from datetime) | 分 |
extract(second from datetime) | 秒 |
extract(dow from datetime) | 曜日(0が日曜、6が土曜) |
