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

MySQLで文字列を日付に変換する方法|STR_TO_DATE関数の使い方を解説

MySQLで文字列を日付に変換するには

MySQLで文字列を日付(DATE型)に変換するには、STR_TO_DATE()関数を使用します。この関数は、指定した書式に従って文字列を解析し、日付値として返してくれます。

STR_TO_DATE()の基本構文

SELECT STR_TO_DATE('文字列', '%d,%m,%Y') AS 任意の変数名;

第1引数に変換したい文字列を、第2引数にその文字列の並び順を示すフォーマット指定子を渡します。主なフォーマット指定子は以下のとおりです。

  • %d … 日(01〜31)
  • %m … 月(01〜12)
  • %Y … 4桁の年
  • %M … 月の英語名(November、December など)

実行例1:カンマ区切りの文字列を変換する

まず、「26,11,2018」という文字列を「日,月,年」の形式として日付に変換してみましょう。

mysql> SELECT STR_TO_DATE('26,11,2018','%d,%m,%Y');

実行結果は以下のとおりです。

+--------------------------------------+
| STR_TO_DATE('26,11,2018','%d,%m,%Y') |
+--------------------------------------+
| 2018-11-26                           |
+--------------------------------------+
1 row in set (0.00 sec)

文字列が正しく「2018-11-26」という日付値に変換されていることがわかります。

実行例2:英語表記の日付文字列を変換する

次に、「November 26 2018」のように英語で記述された日付文字列を変換する例を見てみましょう。

SELECT STR_TO_DATE("November 26 2018", "%M %d %Y");

実行結果:

+---------------------------------------------+
| STR_TO_DATE("November 26 2018", "%M %d %Y") |
+---------------------------------------------+
| 2018-11-26                                  |
+---------------------------------------------+
1 row in set (0.03 sec)

このように、月名が英語表記の場合でも「%M」を使うことで問題なく変換できます。

使用時の注意点

書式指定子が実際の文字列の並び順と一致していない場合、NULLが返されたり警告が発生したりすることがあります。変換を行う前に、元の文字列の形式とフォーマット指定子が正しく対応しているかを必ず確認しておきましょう。

  1. 【PHP】MySQLのDATETIME型から日付だけを抽出して変数に代入する方法

    MySQLのDATETIME型フィールド(例:2018-02-13 13:10:15)から「日付だけ」を取り出したい場合、PHPではDateTimeクラスを使うのが最もシンプルで確実な方法です。SQL側でDATE_FORMAT()を使う方法もありますが、PHP側で柔軟にフォーマットを制御できるDateTimeクラスの利用がおすすめです。DateTime::createFromFormat() の基本構文DateTimeクラスの静的メソッド createFromFormat() を使うと、指定した形式の日時文字列からDateTimeオブジェクトを生成できます。その後、format() メソッドで

  2. MySQLでフィールドから部分的なデータを削除する方法|UPDATE文とREPLACE()関数の使い方

    MySQLでは、フィールドに格納された文字列データの一部だけを削除したいケースがよくあります。例えば、テキスト型カラムの中から特定のタグや不要な文字列を取り除きたい場合などです。こうした「部分的なデータ削除」を実現するには、UPDATE文とREPLACE()関数を組み合わせて使用します。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、REPLACE()を使った部分削除の手順をわかりやすく解説します。1. テーブルの作成まず、ゲーム情報を格納するためのテーブルを作成しましょう。ここでは、GameDetailsというTEXT型のカラムを持つテーブルを定義します。mysql>