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

SQL SQL
この記事は約3分で読めます。

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

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

EXTRACT関数の文法

SELECT EXTRACT(日付要素 FROM 日付) FROM テーブル
引数日付文字列型
書式文字列型
返値文字型 日付要素の値が戻ります。

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の日付要素

日付要素意味
YEAR
NONTH
DAY
HOUR時間
MINUTE
SECOND
TIMEZONE_HOURタイムゾーン付き時間
TIMEZONE_MINUTEタイムゾーン付き分
TIMEZONE_REGIONタイムゾーン
TIMEZONE_ABBRタイムゾーン略称

PostgreSQLの日付要素

日付要素意味
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の日付要素

日付要素単位加算値の形式
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');
MySQL 日時から年の日付要素だけを取得するサンプル実行結果

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

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

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

/* MySQL 日時から年の日付要素だけを取得するサンプル */
SELECT '2023-01-02 12:15:30.0213',EXTRACT(MICROSECOND FROM '2023-01-02 12:15:30.0213');
MySQL 日時から年の日付要素だけを取得するサンプル実行結果
タイトルとURLをコピーしました