MySQLのDATE_FORMAT()とSTR_TO_DATE()を使って日付をフォーマットする方法
はじめに
MySQLでは、STR_TO_DATE()関数とDATE_FORMAT()関数を組み合わせることで、「August 04,2019」のような文字列として保存された日付を「2019-08-04」のような標準的な形式(YYYY-MM-DD)に変換できます。
各関数の役割は以下の通りです。
- STR_TO_DATE(): 指定したフォーマットに従って文字列をDATE型に変換する
- DATE_FORMAT(): 日付の値を指定したフォーマットの文字列に整形する
それでは、実際の手順を見ていきましょう。
手順1:テーブルを作成する
まず、サンプル用のテーブルを作成します。
mysql> create table DemoTable
(
DueDate varchar(100)
);
Query OK, 0 rows affected (0.62 sec)
ここでは、日付を文字列(varchar型)として格納するカラム「DueDate」を持つテーブルを作成しています。
手順2:レコードを挿入する
insertコマンドを使って、テーブルにデータを追加します。
mysql> insert into DemoTable values('August 04,2019');
Query OK, 1 row affected (0.25 sec)手順3:登録内容を確認する
select文ですべてのレコードを表示します。
mysql> select *from DemoTable;
以下のような出力が得られます。
+----------------+
| DueDate |
+----------------+
| August 04,2019 |
+----------------+
1 row in set (0.00 sec)
手順4:日付をフォーマットする
次のクエリで、文字列の日付を「YYYY-MM-DD」形式に変換します。
mysql> set @stringToDate=(select date_format(str_to_date(DueDate, '%M %d,%Y'), '%Y-%m-%d') from DemoTable);
Query OK, 0 rows affected (0.02 sec)
このクエリの処理の流れは以下の通りです。
- str_to_date(DueDate, '%M %d,%Y'): 「August 04,2019」という文字列を、%M(月の英語名)、%d(日)、%Y(4桁の年)というフォーマット指定子に基づいて解析し、日付値に変換します。
- date_format(..., '%Y-%m-%d'): 変換された日付を、%Y-%m-%d(年-月-日)の形式の文字列に整形します。
手順5:結果を確認する
select文で変換後の日付を表示してみましょう。
mysql> select @stringToDate;
実行結果は以下の通りです。
+---------------+
| @stringToDate |
+---------------+
| 2019-08-04 |
+---------------+
1 row in set (0.00 sec)
まとめ
このように、STR_TO_DATE()で文字列を一度日付値に変換し、その結果をDATE_FORMAT()で目的の形式に整えることで、さまざまな形式で保存された日付文字列を柔軟に扱うことができます。入力文字列の形式に合わせてフォーマット指定子(%M、%d、%Yなど)を調整すれば、他のパターンの日付にも同じ手法を応用できます。
-
MySQLでdoubleやdateの値をVARCHAR型に保存しても大丈夫?型変換の方法を解説
はじめに 結論から言うと、MySQLではDOUBLE(倍精度浮動小数点数)やDATE(日付)の値をVARCHAR型のカラムに保存することが可能です。ただし、そのままでは数値計算や日付操作が行えないため、取り出す際に適切な型へ変換する必要があります。 本記事では、実際にテーブルを作成してVARCHAR型としてデータを保存し、後からDOUBLE型・DATE型へ変換して取得するまでの一連の手順を、サンプルコードと実行結果付きで解説します。 1. テーブルの作成 まず、AmountカラムとJoiningDateカラムを持つテーブルを作成します。どちらのカラムもvarchar(20)として定義していま
-
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文を使って、「日/月/年 時:分:秒」