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」 |