MySQLでは、EXTRACT()
を使用できます 日付からパーツを抽出する関数。たとえば、年の部分、月の部分、日の部分などを抽出できます。また、分、秒、マイクロ秒などの時間コンポーネントから部分を抽出することもできます。
この記事には、デモンストレーションの例が含まれています。
構文
構文は次のようになります:
EXTRACT(unit FROM date)
unit
抽出する日付部分であり、date
その部分を抽出する日付値です。
有効なユニット指定子のリストについては、この記事の下部にある表を参照してください。
例1
関数の基本的な使用法を示す例を次に示します。
SELECT EXTRACT(YEAR FROM '2019-01-01') AS 'Result';
結果:
+--------+ | Result | +--------+ | 2019 | +--------+
例2–その他の日付パーツ
ここでは、日付からさまざまな日付部分を抽出します。
SET @date = '2019-10-03'; SELECT EXTRACT(DAY FROM @date) AS 'Day', EXTRACT(MONTH FROM @date) AS 'Month', EXTRACT(YEAR FROM @date) AS 'Year';
結果:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 3 | 10 | 2019 | +------+-------+------+
例3–時間部分の抽出
ここでは、日付からさまざまな時間部分を抽出します。
SET @date = '2019-10-03 12:35:05.123456'; SELECT EXTRACT(HOUR FROM @date) AS 'Hours', EXTRACT(MINUTE FROM @date) AS 'Minutes', EXTRACT(SECOND FROM @date) AS 'Seconds', EXTRACT(MICROSECOND FROM @date) AS 'Microseconds';
結果:
+-------+---------+---------+--------------+ | Hours | Minutes | Seconds | Microseconds | +-------+---------+---------+--------------+ | 12 | 35 | 5 | 123456 | +-------+---------+---------+--------------+
例4–ユニット指定子の組み合わせ
次のように、ユニット指定子を組み合わせることもできます。
SET @date = '2019-10-03 12:35:05.123456'; SELECT EXTRACT(HOUR_MICROSECOND FROM @date) AS 'Result';
結果:
+--------------+ | Result | +--------------+ | 123505123456 | +--------------+
この例では、時間の部分からマイクロ秒の部分まですべてが返されます。
データベースの例
データベースの列から年と月を抽出する例を次に示します。
USE sakila; SELECT payment_date AS 'Date/Time', EXTRACT(YEAR_MONTH FROM payment_date) AS 'Year/Month' FROM payment WHERE payment_id = 1;
結果:
+---------------------+------------+ | Date/Time | Year/Month | +---------------------+------------+ | 2005-05-25 11:30:37 | 200505 | +---------------------+------------+
現在の日付/時刻
ここでは、CURDATE()
で生成された日付から月の部分を抽出します 機能。
SELECT CURDATE(), EXTRACT(MONTH FROM CURDATE());
結果:
+------------+-------------------------------+ | CURDATE() | EXTRACT(MONTH FROM CURDATE()) | +------------+-------------------------------+ | 2018-06-26 | 6 | +------------+-------------------------------+
この例では、現在の日時(NOW()
で生成されたもの)から時間の部分を抽出します。 関数)。
SELECT NOW(), EXTRACT(HOUR FROM NOW());
結果:
+---------------------+--------------------------+ | NOW() | EXTRACT(HOUR FROM NOW()) | +---------------------+--------------------------+ | 2018-06-26 09:01:46 | 9 | +---------------------+--------------------------+
期待値
次の表に、有効な単位値と予想される形式を示します。
unit 価値 | 予想されるexpr フォーマット |
---|---|
MICROSECOND | マイクロ秒 |
2番目 | 秒 |
MINUTE | 分 |
時間 | 時間 |
日 | 日 |
週 | 週 |
月 | 月 |
QUARTER | 四半期 |
年 | 年 |
SECOND_MICROSECOND | 「SECONDS.MICROSECONDS」 |
MINUTE_MICROSECOND | 「MINUTES:SECONDS.MICROSECONDS」 |
MINUTE_SECOND | 「MINUTES:SECONDS」 |
HOUR_MICROSECOND | 「HOURS:MINUTES:SECONDS.MICROSECONDS」 |
HOUR_SECOND | 「HOURS:MINUTES:SECONDS」 |
HOUR_MINUTE | 「HOURS:MINUTES」 |
DAY_MICROSECOND | 「DAYSHOURS:MINUTES:SECONDS.MICROSECONDS」 |
DAY_SECOND | 「DAYSHOURS:MINUTES:SECONDS」 |
DAY_MINUTE | 「DAYSHOURS:MINUTES」 |
DAY_HOUR | 「DAYSHOURS」 |
YEAR_MONTH | 「YEARS-MONTHS」 |