Description:
Output:
=====
mysql> create table t1(c1 date);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t1 values('2016-01-01');
Query OK, 1 row affected (0.00 sec)
mysql> select c1, STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s'), c1 = STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s'), CASE c1 WHEN STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') THEN 'EQUAL' ELSE 'NOT-EQUAL' END from t1;
+------------+---------------------------------------+--------------------------------------------+--------------------------------------------------------------------------------------+
| c1 | STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') | c1 = STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') | CASE c1 WHEN STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') THEN 'EQUAL' ELSE 'NOT-EQUAL' END |
+------------+---------------------------------------+--------------------------------------------+--------------------------------------------------------------------------------------+
| 2016-01-01 | 2016-01-01 00:00:00 | 1 | NOT-EQUAL |
+------------+---------------------------------------+--------------------------------------------+--------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.8-rc |
+-----------+
1 row in set (0.00 sec)
Problem:
=====
"CASE c1 WHEN STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') THEN 'EQUAL' ELSE 'NOT-EQUAL' END" is expected to return 'EQUAL'.
How to repeat:
drop table if exists t1;
create table t1(c1 date);
insert into t1 values('2016-01-01');
select c1, STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s'), c1 = STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s'), CASE c1 WHEN STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') THEN 'EQUAL' ELSE 'NOT-EQUAL' END from t1;
Suggested fix:
"CASE c1 WHEN STR_TO_DATE(c1 , '%Y-%m-%d %H:%i:%s') THEN 'EQUAL' ELSE 'NOT-EQUAL' END" returns 'EQUAL'.