Description:
"str_TO_DATE( '1980-07-06','YYYY-MM-DD HH24:MI:SS')" in a select clause of insert command reports error "ERROR 1411 (HY000): Incorrect datetime value: '1980-07-06' for function str_to_date", while it work fine in a standalone select clause.
MySQL [test1]> begin;
Query OK, 0 rows affected (0.00 sec)
MySQL [test1]> insert into chqin SELECT a2.* FROM chqin1 a2 WHERE a2.col_date NOT BETWEEN '1980-07-06' AND str_TO_DATE( '1980-07-06','YYYY-MM-DD HH24:MI:SS') + 1 ;
ERROR 1411 (HY000): Incorrect datetime value: '1980-07-06' for function str_to_date
MySQL [test1]>
MySQL [test1]> SELECT a2.* FROM chqin1 a2 WHERE a2.col_date NOT BETWEEN '1980-07-06' AND str_TO_DATE( '1980-07-06','YYYY-MM-DD HH24:MI:SS') + 1 limit 1;
+------+------------+
| id | col_date |
+------+------------+
| 1 | 2029-01-01 |
+------+------------+
1 row in set, 2 warnings (0.00 sec)
MySQL [test1]> rollback;
Query OK, 0 rows affected (0.00 sec)
How to repeat:
drop table chqin;
drop table chqin1;
create table chqin(id int, col_date date);
insert into chqin values (1,'2029-01-01 11:00:00');
insert into chqin values (2,'1980-07-06 11:00:00');
create table chqin1(id int, col_date date);
insert into chqin1 values (1,'2029-01-01 11:00:00');
insert into chqin1 values (2,'1980-07-06 11:00:00');
begin;
insert into chqin SELECT a2.* FROM chqin1 a2 WHERE a2.col_date NOT BETWEEN '1980-07-06' AND str_TO_DATE( '1980-07-06','YYYY-MM-DD HH24:MI:SS') + 1 ;
SELECT a2.* FROM chqin1 a2 WHERE a2.col_date NOT BETWEEN '1980-07-06' AND str_TO_DATE( '1980-07-06','YYYY-MM-DD HH24:MI:SS') + 1 limit 1;
rollback;