diff --git a/modules/drivers/mongo/src/metabase/driver/mongo/query_processor.clj b/modules/drivers/mongo/src/metabase/driver/mongo/query_processor.clj index 703d03b2971c11f6bbc9413a4bf20fd5ca859dcf..f075cfe89526f546ad46b64799a0c3bc474eb5f8 100644 --- a/modules/drivers/mongo/src/metabase/driver/mongo/query_processor.clj +++ b/modules/drivers/mongo/src/metabase/driver/mongo/query_processor.clj @@ -325,12 +325,12 @@ (let [report-zone (t/zone-id (or (qp.timezone/report-timezone-id-if-supported :mongo) "UTC")) t (condp = (class t) - java.time.LocalDate t - java.time.LocalTime t - java.time.LocalDateTime t - java.time.OffsetTime (t/with-offset-same-instant t report-zone) - java.time.OffsetDateTime (t/with-offset-same-instant t report-zone) - java.time.ZonedDateTime (t/offset-date-time (t/with-zone-same-instant t report-zone)))] + java.time.LocalDate t + java.time.LocalTime t + java.time.LocalDateTime t + java.time.OffsetTime (t/offset-time t report-zone) + java.time.OffsetDateTime (t/offset-date-time t report-zone) + java.time.ZonedDateTime (t/offset-date-time t report-zone))] (letfn [(extract [unit] (u.date/extract t unit)) (bucket [unit] diff --git a/modules/drivers/mongo/test/metabase/driver/mongo/query_processor_test.clj b/modules/drivers/mongo/test/metabase/driver/mongo/query_processor_test.clj index 8972da6b26c9d0366673c58d88438e7b70f345db..0257b11cc0ff6d29d8e7c1450c54df89b4d68121 100644 --- a/modules/drivers/mongo/test/metabase/driver/mongo/query_processor_test.clj +++ b/modules/drivers/mongo/test/metabase/driver/mongo/query_processor_test.clj @@ -57,6 +57,22 @@ {:aggregation [[:count]] :filter [:time-interval $datetime :last :month]}))))))))) +(deftest absolute-datetime-test + (mt/test-driver :mongo + (testing "Make sure absolute-datetime are compiled correctly" + (doseq [[expected date] + [["2014-01-01" (t/local-date "2014-01-01")] + ["10:00" (t/local-time "10:00:00")] + ["2014-01-01T10:00" (t/local-date-time "2014-01-01T10:00")] + ["03:00Z" (t/offset-time "10:00:00+07:00")] + ["2014-01-01T03:00Z" (t/offset-date-time "2014-01-01T10:00+07:00")] + ["2014-01-01T00:00Z" (t/zoned-date-time "2014-01-01T07:00:00+07:00[Asia/Ho_Chi_Minh]")]]] + (testing (format "with %s" (type date)) + (is (= {:$expr {"$lt" ["$date-field" {:$dateFromString {:dateString expected}}]}} + (mongo.qp/compile-filter [:< + [:field "date-field"] + [:absolute-datetime date]])))))))) + (deftest no-initial-projection-test (mt/test-driver :mongo (testing "Don't need to create initial projections anymore (#4216)"