MySQLでMM/YY形式の日付をYYYY-MM-DD形式に変換する方法
MySQLで「11/15」のようなMM/YY形式の文字列を「2015-11-10」のようなYYYY-MM-DD形式の日付に変換するには、str_to_date()関数を使用します。この関数は、指定したフォーマットに従って文字列を日付値へ変換できる便利な関数です。
まずは、サンプル用のテーブルを作成し、日付データを登録していきましょう。
テーブルの作成例
mysql> create table demo72
-> (
-> due_date varchar(40)
-> );
Query OK, 0 rows affected (2.96 sec)
次に、INSERTコマンドを使ってテーブルにレコードを挿入します。
データ挿入の例
mysql> insert into demo72 values("11/15");
Query OK, 1 row affected (0.26 sec)
mysql> insert into demo72 values("02/20");
Query OK, 1 row affected (0.09 sec)
mysql> insert into demo72 values("07/95");
Query OK, 1 row affected (0.15 sec)SELECT文でテーブルの内容を確認してみましょう。
レコード表示の例
mysql> select *from demo72;
実行すると、以下のような結果が表示されます。
出力結果
+----------+
| due_date |
+----------+
| 11/15 |
| 02/20 |
| 07/95 |
+----------+
3 rows in set (0.00 sec)
それでは、MM/YY形式をYYYY-MM-DD形式に変換するクエリを見ていきましょう。ポイントは、CONCAT関数でダミーの「日」にあたる「10/」を先頭に連結して完全な日付文字列を作成し、そのうえでstr_to_date()関数で変換する点です。
変換クエリの例
mysql> select str_to_date(concat('10/', due_date), '%d/%m/%y') as original_date
-> from demo72;このクエリを実行すると、以下のような結果が得られます。
出力結果
+---------------+
| original_date |
+---------------+
| 2015-11-10 |
| 2020-02-10 |
| 1995-07-10 |
+---------------+
3 rows in set (0.00 sec)
フォーマット指定子の解説
このクエリで使用している主な要素は以下の通りです。
- concat('10/', due_date):元のデータが月/年(MM/YY)のみのため、ダミーの「日」として「10/」を先頭に連結し、完全な日付文字列を作成しています。
- %d:日(01〜31)を表します。
- %m:月(01〜12)を表します。
- %y:2桁の年を表します。4桁の年を扱いたい場合は「%Y」を使用します。
このようにstr_to_date()とCONCATを組み合わせることで、月と年だけのデータでも柔軟に日付形式へ変換できます。クレジットカードの有効期限など、MM/YY形式のデータを扱う際にぜひ活用してください。
-
MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説
MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」
-
MySQLで特定の日を加えてMM/YY形式をYYYY-MM-DDに変換する方法
MM/YYをYYYY-MM-DDに変換するには? MySQLでは、STR_TO_DATE()関数を使うことで、MM/YYのような短い日付形式を完全な日付形式(YYYY-MM-DD)に変換できます。ポイントは、CONCAT()関数で欠けている「日」の値を文字列に連結してから変換することです。基本的な構文は以下のとおりです。 select str_to_date(concat(yourDateValue/, yourColumnName), %d/%m/%y) as anyAliasName from yourTableName; 使用しているフォーマット指定子の意味は次のとおりです。 %d …