-
Notifications
You must be signed in to change notification settings - Fork 143
Bug in the precision of "day of" interval calculation #1678
Description
The engine has a precision issue when it comes to comparing datetime values, in Intervals, when the values are exactly the same.
define TestDateInInterval: @2026-04-02T08:00:00.000+00:00 in Interval(@2026-04-02T08:00:00.000+00:00, @2026-04-06T08:15:00.000+00:00]
define TestDateInIntervalDay: @2026-04-02T08:00:00.000+00:00 in day of Interval(@2026-04-02T08:00:00.000+00:00, @2026-04-06T08:15:00.000+00:00]
"TestDateTinInterval" returns FALSE, which is expected
"TestDateInIntervalDay" returns TRUE, when it actually should return FALSE
Below is a minimal cql library that can be used to reproduce the results:
library TestIntervalAfter
define Interval1: Interval[@2026-04-02T08:00:00.000+00:00, @2026-04-02T08:15:00.000+00:00]
define Interval2: Interval[@2026-04-02T08:00:00.000+00:00, @2026-04-06T08:15:00.000+00:00]
define TestInterval1AfterInterval2: Interval1 starts 6 months or less after start of Interval2
define TestInterval1AfterInterval2Day: Interval1 starts 6 months or less after day of start of Interval2
define TestInterval1AfterInterval2Equivalent: start of Interval1 in Interval(start of Interval2, start of Interval2 + 6 months] and Interval2 is not null
define TestInterval1AfterInterval2DayEquivalent: start of Interval1 in day of Interval(start of Interval2, start of Interval2 + 6 months] and Interval2 is not null
define TestInterval1AfterInterval2DayEquivalent2: start of Interval1 in day of Interval(date from start of Interval2, date from start of Interval2 + 6 months] and Interval2 is not null
define TestDateInInterval: @2026-04-02T08:00:00.000+00:00 in Interval(@2026-04-02T08:00:00.000+00:00, @2026-04-06T08:15:00.000+00:00]
define TestDateInIntervalDay: @2026-04-02T08:00:00.000+00:00 in day of Interval(@2026-04-02T08:00:00.000+00:00, @2026-04-06T08:15:00.000+00:00]
define TestDayComparison: @2026-04-02T08:00:00.000+00:00 after day of @2026-04-02T08:00:00.000+00:00