Description:
TIMESTAMPDIFF function dones not work as expect on `WHERE` caluse where there are two calling with different unit parameter and same datetime expr parameters.
It seems that two TIMESTAMPDIFF fucntion calls with same datetime expr parameters on `where` clause will return same result although they have different unit parameter.
fucntion calls something like this:
TIMESTAMPDIFF(DAY,u.dtime, '2022-08-16 04:30:58')
TIMESTAMPDIFF(MINUTE, u.dtime,'2022-08-16 04:30:58')
These two function call have differe result on `SELECT` clause and same result on `WHERE` clause.
How to repeat:
create table and insert data:
```SQL
CREATE TABLE T_TIMESTAMPDIFF (id int NOT NULL AUTO_INCREMENT, dtime datetime, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;
INSERT INTO T_TIMESTAMPDIFF (id, dtime) VALUES (1, '2022-08-03 10:37:33');
```
### query:
SELECT
TIMESTAMPDIFF(DAY, u.dtime, '2022-08-16 04:30:58') diffDay,
TIMESTAMPDIFF(MINUTE, u.dtime, '2022-08-16 04:30:58') diffMin
FROM
T_TIMESTAMPDIFF u
WHERE id = 1
#### get result:
diffDay diffMin
12 18353
### query:
SELECT
TIMESTAMPDIFF(DAY, u.dtime, '2022-08-16 04:30:58') diffDay,
TIMESTAMPDIFF(MINUTE, u.dtime, '2022-08-16 04:30:58') diffMin
FROM
T_TIMESTAMPDIFF u
WHERE id = 1
AND TIMESTAMPDIFF(DAY,u.dtime, '2022-08-16 04:30:58') = 12
-- AND TIMESTAMPDIFF(MINUTE, u.dtime,'2022-08-16 04:30:58') = 18353;
or
SELECT
TIMESTAMPDIFF(DAY, u.dtime, '2022-08-16 04:30:58') diffDay,
TIMESTAMPDIFF(MINUTE, u.dtime, '2022-08-16 04:30:58') diffMin
FROM
T_TIMESTAMPDIFF u
WHERE id = 1
-- AND TIMESTAMPDIFF(DAY,u.dtime, '2022-08-16 04:30:58') = 12
AND TIMESTAMPDIFF(MINUTE, u.dtime,'2022-08-16 04:30:58') = 18353;
#### get result:
diffDay diffMin
12 18353
### query:
SELECT
TIMESTAMPDIFF(DAY, u.dtime, '2022-08-16 04:30:58') diffDay,
TIMESTAMPDIFF(MINUTE, u.dtime, '2022-08-16 04:30:58') diffMin
FROM
T_TIMESTAMPDIFF u
WHERE id = 1
AND TIMESTAMPDIFF(DAY,u.dtime, '2022-08-16 04:30:58') = 12
AND TIMESTAMPDIFF(MINUTE, u.dtime,'2022-08-16 04:30:58') = 18353;
#### get empty result
when I try query:
SELECT
TIMESTAMPDIFF(DAY, u.dtime, '2022-08-16 04:30:58') diffDay,
TIMESTAMPDIFF(MINUTE, u.dtime, '2022-08-16 04:30:58') diffMin
FROM
T_TIMESTAMPDIFF u
WHERE id = 1
AND TIMESTAMPDIFF(DAY,u.dtime, '2022-08-16 04:30:58') = 12
AND TIMESTAMPDIFF(MINUTE, u.dtime,'2022-08-16 04:30:58') = 12;
#### get result:
diffDay diffMin
12 18353