INSERTクエリで米国式の日付形式をMySQL形式に変換する方法
STR_TO_DATE()関数とは
MySQLでは、STR_TO_DATE()関数を使用することで、INSERTクエリの中で米国式の日付形式(例:01-31-2012)をMySQL標準の日時形式(例:2012-01-31)に変換できます。
まずは、サンプル用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
ShippingDatetime varchar(200)
);
Query OK, 0 rows affected (1.04 sec)INSERTクエリで日付形式を変換しながらデータを挿入する
続いて、INSERTコマンドでレコードを挿入します。ここでは、INSERTと組み合わせてSTR_TO_DATE()関数を使うことで、米国式の日付文字列をその場でMySQL形式へ変換しています。
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('01-31-2012 01:23','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('12-01-2018 04:56','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(ShippingDatetime) values(STR_TO_DATE('04-17-2019 10:10','%m-%d-%Y %H:%i'));
Query OK, 1 row affected (0.17 sec)書式指定子の意味
STR_TO_DATE()の第2引数に指定している主な書式指定子は以下の通りです。
- %m:月(2桁)
- %d:日(2桁)
- %Y:年(4桁)
- %H:時(24時間表記)
- %i:分
挿入結果の確認
SELECT文を使って、テーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が出力されます。
+----+---------------------+ | Id | ShippingDatetime | +----+---------------------+ | 1 | 2012-01-31 01:23:00 | | 2 | 2018-12-01 04:56:00 | | 3 | 2019-04-17 10:10:00 | +----+---------------------+ 3 rows in set (0.00 sec)
このように、米国式の「月-日-年 時:分」形式の日付文字列が、MySQL標準の「年-月-日 時:分:秒」形式へ自動的に変換されて格納されていることが確認できます。外部システムから受け取った日付データをMySQLに取り込む際に、STR_TO_DATE()は非常に便利な関数です。
-
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文を使って、「日/月/年 時:分:秒」