MySQLに日付レコードを挿入する最も簡単な方法は?STR_TO_DATE()関数の使い方を解説
MySQLで日付レコードを挿入・変換するには?
MySQLでは、STR_TO_DATE() 関数を使うことで、文字列として保存された日付データを日付形式に変換できます。以下が基本の構文です。
SELECT STR_TO_DATE(yourColumnName, '%b %Y') FROM yourTableName;
この記事では、実際にテーブルを作成し、「Jan 2018」のような「月 年」形式の文字列データを日付に変換する手順を、具体例とともにわかりやすく解説します。
ステップ1:テーブルを作成する
まず、サンプル用のテーブルを作成しましょう。ここでは入社年月を格納するカラムを持つテーブルを定義します。
mysql> create table DemoTable
-> (
-> JoiningYear varchar(20)
-> );
Query OK, 0 rows affected (0.69 sec)
ステップ2:レコードを挿入する
次に、INSERTコマンドを使っていくつかのレコードを登録します。
mysql> insert into DemoTable values('Jan 2018');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('May 2107');
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Aug 2019');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Oct 2020');
Query OK, 1 row affected (0.10 sec)ステップ3:テーブルの内容を確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-------------+
| JoiningYear |
+-------------+
| Jan 2018 |
| May 2107 |
| Aug 2019 |
| Oct 2020 |
+-------------+
4 rows in set (0.00 sec)
ステップ4:STR_TO_DATE()で日付に変換する
ここからが本題です。STR_TO_DATE()関数を使って、文字列の日付レコードを変換します。
mysql> select str_to_date(JoiningYear,'%b %Y') from DemoTable;
実行すると、次のような出力が得られます。
+----------------------------------+
| str_to_date(JoiningYear,'%b %Y') |
+----------------------------------+
| 2018-01-00 |
| 2107-05-00 |
| 2019-08-00 |
| 2020-10-00 |
+----------------------------------+
4 rows in set (0.05 sec)
フォーマット指定子の解説
上記のクエリで使用した %b と %Y の意味は以下の通りです。
- %b:月名の省略形(Jan、Feb、Marなど)を表します。
- %Y:4桁の西暦(2018、2019など)を表します。
元のデータには日(day)の情報が含まれていないため、変換結果の日部分は「00」と表示されます。もし日付まで含めた文字列を扱う場合は、%d(日)などの指定子を組み合わせることで、完全な日付形式(YYYY-MM-DD)への変換も可能です。
まとめ
MySQLで文字列形式の日付データを扱う際は、STR_TO_DATE()関数が非常に便利です。「月 年」形式だけでなく、さまざまなフォーマット指定子を組み合わせることで、柔軟に日付変換を行えます。データ型をDATE型にして正規化することも検討しつつ、既存データの一時的な変換や表示用途として活用してみてください。
-
MySQLでテーブル列の全日付レコードに1年を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、日付や日時の値に指定した期間を簡単に加算できます。この記事では、テーブル内のすべての日付レコードに1年を追加する方法を、具体的な手順とともに解説します。 サンプルテーブルの作成 まず、デモ用のテーブルを作成します。ここでは、入社日を格納する JoiningDate カラムを持つテーブルを定義します。 mysql> create table DemoTable -> ( -> JoiningDate datetime -> ); Query OK, 0 rows affected (0.59
-
MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方
MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ