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

MySQLのSTR_TO_DATE関数で文字列とフォーマット指定子から日時を変換・取得する方法

MySQLでは、STR_TO_DATE()関数を使用することで、特定の形式で保存された日時の文字列を、日付・時刻型の値に変換できます。本記事では、実際にテーブルを作成し、文字列として格納された日時データをフォーマット指定子に基づいて変換する手順を解説します。

1. テーブルの作成

まず、日時情報を文字列(varchar型)として格納するテーブルを作成します。

mysql> create table DemoTable
-> (
-> AdmissionDate varchar(100)
-> );
Query OK, 0 rows affected (0.66 sec)

2. レコードの挿入

次に、INSERT文を使ってサンプルデータを挿入します。ここでは「Wed, 19 Jun 2019 04:10:20」という英語形式の日時文字列を登録します。

mysql> insert into DemoTable values('Wed, 19 Jun 2019 04:10:20');
Query OK, 1 row affected (0.22 sec)

3. テーブル内容の確認

SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。

mysql> select *from DemoTable;

出力結果

+---------------------------+
| AdmissionDate |
+---------------------------+
| Wed, 19 Jun 2019 04:10:20 |
+---------------------------+
1 row in set (0.00 sec)

4. STR_TO_DATE関数で日時に変換

以下のクエリを実行すると、文字列とフォーマット指定子に基づいて、日付と時刻全体を取得できます。

mysql> SELECT STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') from DemoTable;

出力結果

+---------------------------------------------------------+
| STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') |
+---------------------------------------------------------+
| 2019-06-19 04:10:20 |
+---------------------------------------------------------+
1 row in set (0.00 sec)

使用したフォーマット指定子の意味

上記のクエリで使用した主なフォーマット指定子は以下のとおりです。

  • %a:曜日の省略形(Sun〜Sat)→ 例:Wed
  • %d:日(00〜31)→ 例:19
  • %b:月名の省略形(Jan〜Dec)→ 例:Jun
  • %Y:4桁の年 → 例:2019
  • %H:時(00〜23)→ 例:04
  • %i:分(00〜59)→ 例:10
  • %s:秒(00〜59)→ 例:20

このようにSTR_TO_DATE()関数を使えば、任意の形式の文字列をMySQLが認識できるDATETIME値へ正確に変換でき、日付関数やソート処理などにも活用できます。なお、元の文字列に含まれるタイムゾーン表記(ここでは「EDT」)はフォーマット文字列内でそのまま指定することで無視され、日時部分のみが抽出されます。

  1. MySQLのDATEDIFF関数で現在の日付と入社日の差(日数)を求める方法

    MySQLでは、DATEDIFF()関数を使うことで、2つの日付の差を日数で簡単に計算できます。この記事では、まずCURDATE()関数で現在の日付を取得し、その後DATEDIFF()関数を使って入社日(JoiningDate)と現在日付の差を求める手順を解説します。現在の日付を確認する現在の日付はCURDATE()関数で以下のように取得できます。mysql> select curdate(); +------------+ | curdate() | +------------+ | 2019-10-26 | +------------+ 1 row in set (0.00 sec

  2. SELECTでテーブル全体を返すMySQLストアドプロシージャの作成方法

    MySQLでは、ストアドプロシージャ内でSELECT文を実行することで、引数で渡した条件に一致するレコード(この例ではテーブル全体)を結果として返すことができます。ここでは、テーブルの作成からプロシージャの呼び出しまで、手順を追って解説します。 1. サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1971     (     StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,  &n