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 … 日(01〜31)
- %m … 月(01〜12)
- %y … 2桁の年
サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成しましょう。
mysql> create table demo46 -> ( -> id int not null auto_increment primary key, -> short_date varchar(20) -> ); Query OK, 0 rows affected (0.60 sec)
レコードの挿入
続いて、INSERT文でいくつかのレコードを追加します。
mysql> insert into demo46(short_date) values('09/18');
Query OK, 1 row affected (0.08 sec)
mysql> insert into demo46(short_date) values('12/20');
Query OK, 1 row affected (0.12 sec)
mysql> insert into demo46(short_date) values('11/20');
Query OK, 1 row affected (0.20 sec)
レコードの表示
SELECT文でテーブルの内容を確認してみましょう。
mysql> select *from demo46;
実行すると、次のような出力が得られます。
+----+------------+ | id | short_date | +----+------------+ | 1 | 09/18 | | 2 | 12/20 | | 3 | 11/20 | +----+------------+ 3 rows in set (0.00 sec)
MM/YYからYYYY-MM-DDへの変換クエリ
以下のクエリでは、「24」を日の値として連結し、MM/YY形式のデータをYYYY-MM-DD形式に変換しています。
mysql> select str_to_date(concat('24/', short_date), '%d/%m/%y') as Convert_In_Full_Date
-> from demo46;
実行結果は以下のとおりです。
+----------------------+ | Convert_In_Full_Date | +----------------------+ | 2018−09−24 | | 2020−12−24 | | 2020−11−24 | +----------------------+ 3 rows in set (0.00 sec)
まとめ
このように、CONCAT()で不足している「日」の値を補い、STR_TO_DATE()で日付として解析することで、MM/YY形式の文字列を簡単にYYYY-MM-DD形式へ変換できます。なお、2桁の年(%y)は「00〜69」なら2000年代、「70〜99」なら1900年代として解釈されるため、「18」は2018年、「20」は2020年に自動的に変換されます。用途に応じて適切な日の値を連結して活用してください。
-
MySQLで特定のカラム名を持つテーブルを検索する方法
MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a
-
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)次に、INSE