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

MySQLで文字列(varchar)をタイムスタンプ形式に変換する方法

MySQLで文字列をタイムスタンプ形式に変換するには?

MySQLで文字列(varchar型)をタイムスタンプ形式に変換するには、STR_TO_DATE()関数とDATE_FORMAT()関数を組み合わせて使用します。STR_TO_DATE()で文字列を日付値に解析し、DATE_FORMAT()で目的の形式に整形します。

まず、実際の動作を確認するためのサンプルテーブルを作成しましょう。

mysql> create table DemoTable1602
    -> (
    -> ReportingDate varchar(40)
    -> );
Query OK, 0 rows affected (0.51 sec)

テーブルへのデータ挿入

次に、INSERTコマンドを使ってテーブルにレコードを挿入します。ここでは「Wed Oct 02 16:10:45 IST 2019」のような形式の文字列を扱います。

mysql> insert into DemoTable1602 values('Wed Oct 02 16:10:45 IST 2019');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1602 values('Fri May 31 13:00:10 IST 2019');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1602 values('Mon Dec 31 14:20:00 IST 2018');
Query OK, 1 row affected (0.23 sec)

挿入したデータの確認

SELECT文を使って、テーブル内のすべてのレコードを表示します。

mysql> select * from DemoTable1602;

上記のクエリを実行すると、次のような出力が得られます。

+------------------------------+
| ReportingDate                |
+------------------------------+
| Wed Oct 02 16:10:45 IST 2019 |
| Fri May 31 13:00:10 IST 2019 |
| Mon Dec 31 14:20:00 IST 2018 |
+------------------------------+
3 rows in set (0.00 sec)

文字列をタイムスタンプ形式に変換するクエリ

以下が、MySQLで文字列をタイムスタンプ形式に変換するクエリです。フォーマット指定子%a %b %d %T IST %Yを使って元の文字列を解析し、%d-%m-%Y %H:%i:%sの形式に変換しています。

mysql> select date_format(str_to_date(ReportingDate,'%a %b %d %T IST %Y'),'%d-%m-%Y %H:%i:%s') from DemoTable1602;

実行結果は以下の通りです。文字列が「日-月-年 時:分:秒」の形式に変換されていることが確認できます。

+----------------------------------------------------------------------------------+
| date_format(str_to_date(ReportingDate,'%a %b %d %T IST %Y'),'%d-%m-%Y %H:%i:%s') |
+----------------------------------------------------------------------------------+
| 02-10-2019 16:10:45                                                              |
| 31-05-2019 13:00:10                                                              |
| 31-12-2018 14:20:00                                                              |
+----------------------------------------------------------------------------------+
3 rows in set (0.03 sec)

使用したフォーマット指定子の解説

STR_TO_DATE()で使用した主なフォーマット指定子は以下の通りです。

  • %a:曜日の省略形(例:Wed、Fri)
  • %b:月名の省略形(例:Oct、May)
  • %d:日(01〜31)
  • %T:24時間形式の時刻(hh:mm:ss)
  • %Y:4桁の年

このように、STR_TO_DATE()DATE_FORMAT()を組み合わせることで、さまざまな形式の文字列を自由にタイムスタンプ形式へ変換できます。データの形式に合わせてフォーマット指定子を調整してください。

  1. PHP変数「11:00 AM」をMySQLの時間形式に変換する方法

    PHPの「11:00 AM」をMySQLの時間形式に変換する方法 MySQLのTIME型やDATETIME型は、時刻を24時間表記の「HH:MM:SS」形式で管理します。そのため、「11:00 AM」のようにAM/PMを含む文字列をデータベースに保存する場合は、事前に形式を変換しておく必要があります。本記事では、PHP標準のDateTimeクラスを使った変換方法を、サンプルコードと実行結果付きで解説します。 変換の基本の流れ DateTime::createFromFormat() … 入力文字列をDateTimeオブジェクトとして解析する format() … 解析結果を「H:i:s」(2

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