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

MySQLテーブルへの挿入時に発生する「Incorrect datetime value」エラーの修正方法

```html

MySQLの「Incorrect datetime value」エラーとは

MySQLのテーブルに日時データを挿入する際、「ERROR 1292: Incorrect datetime value」というエラーが発生することがあります。このエラーを回避するには、STR_TO_DATE() 関数を使用するのが最も効果的です。

MySQLにおけるDATETIME型の標準フォーマットは「YYYY-MM-DD HH:MM:SS」です。これと異なる形式(例:DD/MM/YYYY)の日時を挿入しようとすると、エラーが発生します。

エラーが発生するケース

まず、検証用のテーブルを作成してみましょう。テーブル作成のクエリは以下の通りです。

mysql> create table CorrectDatetimeDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ArrivalTime datetime
    -> );
Query OK, 0 rows affected (0.63 sec)

次に、誤った形式の日時を挿入してみます。

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45');
ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 1

「18/02/2019 11:15:45」はDD/MM/YYYY形式で記述されているため、MySQLが期待するYYYY-MM-DD形式と一致せず、エラーとなってしまいます。

STR_TO_DATE()関数による解決方法

この問題を回避するには、STR_TO_DATE()関数を使って文字列を正しい日時形式に変換してから挿入します。構文は以下の通りです。

INSERT INTO yourTableName(yourDateTimeColumnName)
VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));

それでは、上記の構文に従って日時データを実際に挿入してみましょう。

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s'));
Query OK, 1 row affected (0.21 sec)

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s'));
Query OK, 1 row affected (0.16 sec)

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s'));
Query OK, 1 row affected (0.20 sec)

挿入結果の確認

SELECT文ですべてのレコードを表示して確認します。

mysql> select *from CorrectDatetimeDemo;

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

+----+---------------------+
| Id | ArrivalTime         |
+----+---------------------+
|  1 | 2019-02-18 11:15:45 |
|  2 | 2017-01-15 10:10:15 |
|  3 | 2016-04-12 15:30:35 |
+----+---------------------+
3 rows in set (0.00 sec)

ご覧の通り、「DD/MM/YYYY HH:MM:SS」形式で入力した日時が、MySQL標準の「YYYY-MM-DD HH:MM:SS」形式へ自動的に変換されて正常に格納されています。

まとめ

DATETIME型カラムへの挿入時に「Incorrect datetime value」エラーが発生した場合は、次の対処法を検討しましょう。

  • STR_TO_DATE()関数を使用する:挿入前に文字列を正しい日時形式へ変換する
  • フォーマット指定子を適切に設定する:%d(日)、%m(月)、%Y(年)、%H(時)、%i(分)、%s(秒)など、入力データの形式に合わせて指定する
  • 標準形式でデータを用意する:可能であれば、最初から「YYYY-MM-DD HH:MM:SS」形式で挿入するのが確実
  1. MySQLで製品テーブルから製品の合計金額を計算する方法

    MySQLで製品テーブルから合計金額を算出する手順 在庫管理や売上集計などの場面では、「数量 × 単価」の合計値を求めたいケースがよくあります。MySQLでは SUM() 関数と乗算を組み合わせることで、この計算を1つのSQLクエリで簡単に実現できます。 ここでは、サンプルテーブルを作成し、実際に合計金額を計算するまでの手順を解説します。 1. テーブルの作成 まず、製品ID・数量・単価を持つテーブルを作成します。 mysql> create table DemoTable ( ProductId int NOT NULL AUTO_INCREMENT PRIMARY

  2. MySQLでテーブルの構造を複製する方法|LIKE句を使った手順を解説

    MySQLで既存テーブルと同じ構造を持つ新しいテーブルを作成(複製)したい場合は、LIKE句を使用します。この記事では、実際にサンプルテーブルを作成しながら、テーブル構造を複製する具体的な手順をわかりやすく解説します。1. 元となるテーブルを作成するまずは複製元となるサンプルテーブルを作成しましょう。ここでは学生IDと学生名を格納するテーブルを定義します。mysql> create table DemoTable1-> (-> StudentId int,-> StudentName varchar(20)-> );Query OK, 0 rows affecte