MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで日付から年を抽出する方法|YEAR()関数の使い方を徹底解説

MySQLで日付データから「年」だけを取り出したい場合は、組み込み関数の YEAR() を使うのが最も簡単です。この記事では、現在の日付から年を取得する基本の方法に加えて、VARCHAR型のカラムに保存された日付文字列から年を抽出する応用テクニックまで、実際のSQL文と実行結果をもとにわかりやすく解説します。

YEAR()関数で現在の年を取得する

まずは基本となる方法です。CURDATE() 関数で現在の日付を取得し、それを YEAR() に渡すことで、現在の年だけを抽出できます。

mysql> SELECT YEAR(curdate()) as OnlyYearFromCurrentDate;

実行結果は以下の通りです。

+-------------------------+
| OnlyYearFromCurrentDate |
+-------------------------+
| 2018                    |
+-------------------------+
1 row in set (0.00 sec)

NOW()関数を使った別の書き方

NOW() 関数を使っても同じ結果が得られます。DATE() で日付部分のみを取り出してから YEAR() を適用しています。

mysql> SELECT YEAR(date(now())) as OnlyYearFromCurrentDate;

実行結果:

+-------------------------+
| OnlyYearFromCurrentDate |
+-------------------------+
| 2018                    |
+-------------------------+
1 row in set (0.00 sec)

VARCHAR型カラムから年を抽出する方法

日付が文字列(VARCHAR型)として保存されている場合でも、STR_TO_DATE() 関数と組み合わせれば年を抽出できます。まずはサンプル用のテーブルを作成しましょう。

mysql> create table ExtractYearDemo
   -> (
   -> YourDueTime varchar(200)
   -> );
Query OK, 0 rows affected (1.15 sec)

次に、INSERTコマンドで日付文字列のレコードを挿入します。

mysql> insert into ExtractYearDemo values('27-10-2011');
Query OK, 1 row affected (0.16 sec)

mysql> insert into ExtractYearDemo values('28-11-2012');
Query OK, 1 row affected (0.15 sec)

mysql> insert into ExtractYearDemo values('29-12-2018');
Query OK, 1 row affected (0.14 sec)

mysql> insert into ExtractYearDemo values('01-01-2019');
Query OK, 1 row affected (0.15 sec)

SELECT文ですべてのレコードを確認してみます。

mysql> select *from ExtractYearDemo;

実行結果:

+-------------+
| YourDueTime |
+-------------+
| 27-10-2011  |
| 28-11-2012  |
| 29-12-2018  |
| 01-01-2019  |
+-------------+
4 rows in set (0.00 sec)

ここでポイントになるのが STR_TO_DATE() 関数です。フォーマット指定子 %d-%m-%Y を使って「日-月-年」形式の文字列を日付型に変換し、その結果に対して YEAR() を適用することで、年だけを正しく抽出できます。

mysql> select YEAR(STR_TO_DATE(yourDueTime, "%d-%m-%Y")) As OnlyYearFromDate from ExtractYearDemo;

実行結果:

+------------------+
| OnlyYearFromDate |
+------------------+
|             2011 |
|             2012 |
|             2018 |
|             2019 |
+------------------+
4 rows in set (0.00 sec)

まとめ

MySQLで日付から年を抽出するには YEAR() 関数を使用します。DATE型やDATETIME型のカラムであればそのまま適用できる一方、VARCHAR型など文字列として保存された日付の場合は、STR_TO_DATE() で一度日付型へ変換してから使うのがポイントです。用途に応じてこれらの関数を使い分けることで、柔軟に年情報を取得できます。

  1. PHPのdate_parse()関数でタイムスタンプから日・月・年を抽出する方法

    date_parse()関数でタイムスタンプを解析するPHPでタイムスタンプ(日時文字列)から日・月・年を抽出するには、date_parse() 関数を使用します。この関数は日時文字列を解析し、年・月・日・時・分・秒などの情報を連想配列として返してくれます。基本構文は以下の通りです。print_r(date_parse(anyTimeStampValue));サンプルコード具体的なタイムスタンプ値を解析するPHPコードは以下のようになります。$yourTimeStampValue="2019-02-04 12:56:50"; print_r(date_parse($your

  2. MySQLで日付形式から数値の日付値を抽出する方法

    MySQLで日付形式から数値の日付値を抽出する方法MySQLで「31-Jan-19」のような文字列として保存された日付データを数値(UNIXタイムスタンプ)に変換したい場合は、UNIX_TIMESTAMP() 関数と STR_TO_DATE() 関数を組み合わせて使用します。基本的な構文は以下の通りです。select UNIX_TIMESTAMP(STR_TO_DATE(yourColumnName, %d-%b-%y)) as anyAliasName from yourTableName;サンプルテーブルの作成まず、動作確認用のテーブルを作成します。mysql> create tab