日付形式をMySQLの日付に正しく変換するには?STR_TO_DATE()関数の使い方
はじめに
文字列として保存された日付をMySQLの日付型(DATETIME型)に変換するには、STR_TO_DATE()関数を使用します。この関数に適切な書式指定子を渡すことで、さまざまな形式の日付文字列を正確に変換できます。
テーブルの作成
まず、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable -> ( -> DueDatetime varchar(100) -> ); Query OK, 0 rows affected (1.03 sec)
レコードの挿入
INSERTコマンドを使って、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable values('22-06-2019 14:40');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values('02-07-2015 13:10');
Query OK, 1 row affected (0.18 sec)
レコードの確認
SELECT文でテーブル内のすべてのレコードを表示してみます。
mysql> select *from DemoTable;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+------------------+ | DueDatetime | +------------------+ | 22-06-2019 14:40 | | 02-07-2015 13:10 | +------------------+ 2 rows in set (0.00 sec)
日付への変換クエリ
続いて、STR_TO_DATE()関数を使って文字列を日付に変換するクエリを見ていきましょう。
mysql> select str_to_date(DueDatetime,'%d-%m-%Y %H:%i') from DemoTable;
出力結果
実行結果は以下の通りです。
+-------------------------------------------+ | str_to_date(DueDatetime,'%d-%m-%Y %H:%i') | +-------------------------------------------+ | 2019-06-22 14:40:00 | | 2015-07-02 13:10:00 | +-------------------------------------------+ 2 rows in set (0.00 sec)
書式指定子の解説
この例で使用している主な書式指定子は以下の通りです。
- %d:日(01〜31)
- %m:月(01〜12)
- %Y:4桁の年(例:2019)
- %H:時(00〜23)
- %i:分(00〜59)
このように、元の文字列「22-06-2019 14:40」が「2019-06-22 14:40:00」という標準的なDATETIME形式に変換されました。STR_TO_DATE()関数を使えば、任意の形式の日付文字列でも、対応する書式指定子を正しく指定するだけで、簡単にMySQLの日付型へ変換できます。
-
VARCHARデータをMySQLの日付形式に変換する方法
VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate 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文を使って、「日/月/年 時:分:秒」