MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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()は非常に便利な関数です。

  1. VARCHARデータをMySQLの日付形式に変換する方法

    VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)

  2. 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文を使って、「日/月/年 時:分:秒」