Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Won't Fix
-
5.5.56, 5.5.60, 5.5(EOL)
-
CentOS7, Windows 10
Description
It seems that MariaDB 5.5 handles NOW() and equality checks against time columns in an unexpected way. Notice:
select a.* from ( |
select now() as now, TIME('06:00:00') as start, TIME('19:00:00') as stop |
) a
|
WHERE start <= NOW() |
AND stop >= now(); |
In MySQL 5.0, 5.5, 5.6, 5.7, and MariaDB 10, this query returns a row when NOW() is a time of day between 06:00 and 19:00. However, on MariaDB 5.5, no row is returned. Changing the query to force casting like this allows the query to work:
select a.* from ( |
select now() as now, TIME('06:00:00') as start, TIME('19:00:00') as stop |
) a
|
WHERE start <= time(NOW()) |
AND stop >= time(now()); |
It is my guess that MariaDB is casting the NOW() to a string, then comparing against the string equivalent of 'start'. Or perhaps it is casting both fields to DATETIMEs and since the start/stop column omits the date component, MariaDB might be putting some incorrect date into the cast DATETIME.
Attachments
Issue Links
- relates to
-
MDEV-6102 Comparison between TIME and DATETIME does not use CURRENT_DATE
- Closed