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

指定されたフォーマット文字列がSTR_TO_DATE()関数に引数として渡された日付文字列と一致しない場合、MySQLは何を返しますか?


指定されたフォーマット文字列と日付文字列が一致しなかった場合、MySQLは警告とともに出力としてNULL値を返します。以下は同じことを理解するための例です-

mysql> Select STR_TO_DATE('20172810', '%Y,%d%m');
+------------------------------------+
| STR_TO_DATE('20172810', '%Y,%d%m') |
+------------------------------------+
| NULL                               |
+------------------------------------+
1 row in set, 1 warning (0.00 sec)

上記のクエリは、フォーマット文字列の%Yの後にコンマ(、)が含まれているが、日付文字列の2017年以降はコンマがないため、出力としてNULLを返します。

mysql> Show Warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1411
Message: Incorrect datetime value: '20172810' for function str_to_date
1 row in set (0.00 sec)

同様に、フォーマット文字列の日付単位の順序を日付文字列と区別すると、MySQLは上記と同じように動作します。それを理解するために例を以下に示します-

mysql> Select STR_TO_DATE('20172810', '%d%m%Y');
+-----------------------------------+
| STR_TO_DATE('20172810', '%d%m%Y') |
+-----------------------------------+
| NULL                              |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

上記のクエリでは、フォーマット文字列の単位の順序が日付文字列の単位の順序から変更されています。

mysql> Show Warnings\G
*************************** 1. row ***************************
Level: Warning
Code: 1411
Message: Incorrect datetime value: '20172810' for function str_to_date
1 row in set (0.00 sec)

  1. 日付形式をMySQLSTR_TO_DATEに置き換えます

    最初にテーブルを作成しましょう- mysql> create table DemoTable(DueDate varchar(100)); Query OK, 0 rows affected (0.78 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('10-01-2019 10:19:20'); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values('12-0

  2. MySQLでDATE_FORMAT()およびSTR_TO_DATE()を使用して日付をフォーマットします

    まずテーブルを作成しましょう- mysql> create table DemoTable (    DueDate varchar(100) ); Query OK, 0 rows affected (0.62 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('August 04,2019'); Query OK, 1 row affected (0.25 sec) selectステートメントを使用してテーブルのすべてのレコードを表示する-