MySQLでvarchar型の日付から特定の月をフィルタリングする方法
varchar型として保存された日付データから特定の月を抽出するには、MySQLのSTR_TO_DATE()関数を使用します。この関数で文字列を日付型に変換し、MONTH()関数と組み合わせることで、目的の月のデータを簡単にフィルタリングできます。
それでは、まずサンプルとなるテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> DueDate varchar(100)
-> );
Query OK, 0 rows affected (1.18 sec)
次に、insertコマンドを使ってテーブルにレコードを挿入します。
mysql> insert into DemoTable values('06-19-2019');
Query OK, 1 row affected (0.36 sec)
mysql> insert into DemoTable values('01-31-2018');
Query OK, 1 row affected (0.38 sec)
mysql> insert into DemoTable values('12-01-2016');
Query OK, 1 row affected (0.14 sec)select文でテーブル内のすべてのレコードを確認してみましょう。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+------------+
| DueDate |
+------------+
| 06-19-2019 |
| 01-31-2018 |
| 12-01-2016 |
+------------+
3 rows in set (0.00 sec)
特定の月でフィルタリングするクエリ
varchar型の日付から特定の月を抽出するには、以下のようにクエリを記述します。
mysql> select *from DemoTable
-> where month(str_to_date(DueDate, '%m-%d-%Y')) = 06;
出力結果
このクエリを実行すると、6月(06月)のデータのみが抽出されます。
+------------+
| DueDate |
+------------+
| 06-19-2019 |
+------------+
1 row in set (0.00 sec)
ここで使用しているフォーマット指定子「%m-%d-%Y」は、元のデータが「月-日-年」の形式(例:06-19-2019)で保存されていることを示しています。実際に運用する際は、データの保存形式に合わせてフォーマット指定子を適切に変更してください。例えば、日付が「年-月-日」の形式で保存されている場合は「%Y-%m-%d」を指定します。
なお、STR_TO_DATE()関数をWHERE句で使用するとインデックスが利用できず、大量のデータを扱う場合にパフォーマンスが低下する可能性があります。可能であれば、カラムをDATE型で定義しておくことがベストプラクティスとして推奨されます。
-
MySQLで特定のカラムのデータをエクスポートする方法(INTO OUTFILEの使い方)
MySQLで特定のカラムのデータをエクスポートする方法 MySQLでテーブルから特定のカラム(列)のデータだけをファイルに書き出したい場合は、SELECT文とINTO OUTFILEを組み合わせるのが最もシンプルで確実な方法です。この記事では、実際にテーブルを作成し、データを投入したうえで、特定のカラムをテキストファイルへエクスポートする手順を順番に解説します。 基本構文 特定のカラムをファイルに出力する際の基本構文は次のとおりです。 select yourColumnName from yourTableName into outfile yourLocationOfFile; このように
-
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文を使って、「日/月/年 時:分:秒」