SQL道場 日付時刻関数 EXTRACT関数

SQLで日付値から任意の日付要素の数値を得るEXTRACT関数について記載しています。

対応データベース:MySQL Oracle PostgreSQL ANSI

EXTRACT関数の文法

SELECT EXTRACT(日付要素 FROM 日付) FROM テーブル
SELECT EXTRACT (Date Element FROM Date) FROM Table
引数
Arguments
日付
Date
文字列型
String type
書式
Format
文字列型
String type
返値
return value
文字型 日付要素の値が戻ります。
Returns the value of a character date element.

EXTRACT関数は指定された日付から指定された日付要素だけを取り出し数値で返します。PostgeSQLではEXTRACT関数もDATE_PART関数と同じ機能を持ちます。PostgreSQLの場合、DATE_PART関数は日付要素をシングルクォート「’」で囲む必要がありますが、EXTRACT関数の場合は囲んでも囲まなくてもどちらでも大丈夫です。

MySQL

EXTRACT() 関数は、DATE_ADD() または DATE_SUB() と同じ種類の unit 指定子を使用しますが、日付演算を実行するのではなく、日付から部分を抽出します。 unit 引数の詳細は、時間間隔 を参照してください。

https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html#function_extract

Oracleの日付要素

日付要素
Date element
意味
Meaning
YEAR
NONTH
DAY
HOUR時間
MINUTE
SECOND
TIMEZONE_HOURタイムゾーン付き時間
Time with time zone
TIMEZONE_MINUTEタイムゾーン付き分
Minutes with Time Zone
TIMEZONE_REGIONタイムゾーン
Time Zone
TIMEZONE_ABBRタイムゾーン略称
Time Zone Abbreviation

PostgreSQLの日付要素

日付要素
Date element
意味
Meaning
century世紀
day日付
decade年を10で割ったもの
dow曜日(0-6)0が日曜日
doy年通算日数
epoch1970-01-01 00:00:00からの秒数
hour時(0-23)
microsecondsマイクロセカンド
millennium千年期。年を1000で割ったもの
millisecondsミリセカンド
minute
month付き。timestamp型では月(1-12)。interval型では月の数(0-11:モジュロ12)
quarter四半期
second
week
year

MySQLの日付要素

日付要素
Date element
単位
Unit
加算値の形式
addition value format
SECOND数値
MINUTE数値
HOUR時間数値
DAY
or
DAYS
数値
MONTH
or
MONTHS
数値
YEAR
or
YEARS
数値
MINUTE_SECOND分秒mm:ss
HOUR_MINUTE時分hh:mm
DAY_HOUR日時dd hh
YEAR_MONTH年月yy-mm
HOUR_SECOND時分秒hh:mm:ss
DAY_MINUTE日時分dd hh:mm
DAY_SECOND日時分秒dd hh:mm:ss

MySQLの実行例

日時から年の日付要素だけを取得

/* MySQL 日時から年の日付要素だけを取得するサンプル */
SELECT '2023-01-02 12:15:30',EXTRACT(YEAR FROM '2023-01-02 12:15:30');
EXTRACT関数サンプル実行結果果

現在の日付より月の日付要素だけを取得

/* MySQL 現在の日付より月の日付要素だけを取得するサンプル */
SELECT CURRENT_DATE,EXTRACT(MONTH FROM CURRENT_DATE);
EXTRACT関数サンプル実行結果果

日時からマイクロ秒の日付要素だけを取得

/* MySQL 日時から年の日付要素だけを取得するサンプル */
SELECT '2023-01-02 12:15:30.0213',EXTRACT(MICROSECOND FROM '2023-01-02 12:15:30.0213');
EXTRACT関数サンプル実行結果果