diff --git a/src/metabase/query_processor/middleware/parameters/dates.clj b/src/metabase/query_processor/middleware/parameters/dates.clj
index 1cf075c89a5d4cfcbf3d27837cbf2b0739b62305..07314fb2a6eec89bb9ea35edb9175b6f9622f58c 100644
--- a/src/metabase/query_processor/middleware/parameters/dates.clj
+++ b/src/metabase/query_processor/middleware/parameters/dates.clj
@@ -113,15 +113,15 @@
    ;; e.g. past30days  = past 30 days, not including partial data for today ({:include-current false})
    ;;      past30days~ = past 30 days, *including* partial data for today   ({:include-current true})
    {:parser (regex->parser #"past([0-9]+)(day|week|month|year)s(~?)", [:int-value :unit :include-current?])
-    :range  (fn [{:keys [unit int-value unit-range to-period]} dt]
+    :range  (fn [{:keys [unit int-value unit-range to-period include-current?]} dt]
               (unit-range (t/minus dt (to-period int-value))
-                          (t/minus dt (to-period 1))))
+                          (t/minus dt (to-period (if (seq include-current?) 0 1)))))
     :filter (fn [{:keys [unit int-value include-current?]} field]
               ["TIME_INTERVAL" field (- int-value) unit {:include-current (boolean (seq include-current?))}])}
 
-   {:parser (regex->parser #"next([0-9]+)(day|week|month|year)s" [:int-value :unit])
-    :range  (fn [{:keys [unit int-value unit-range to-period]} dt]
-              (unit-range (t/plus dt (to-period 1))
+   {:parser (regex->parser #"next([0-9]+)(day|week|month|year)s(~?)" [:int-value :unit :include-current?])
+    :range  (fn [{:keys [unit int-value unit-range to-period include-current?]} dt]
+              (unit-range (t/plus dt (to-period (if (seq include-current?) 0 1)))
                           (t/plus dt (to-period int-value))))
     :filter (fn [{:keys [unit int-value]} field]
               ["TIME_INTERVAL" field int-value unit])}
diff --git a/test/metabase/query_processor/middleware/parameters/date_test.clj b/test/metabase/query_processor/middleware/parameters/date_test.clj
index 5fac33a70ff7d230344d5b527c5c5b4a1dbe8a1e..dd0ed9b2f20bc2eeb0b823ba784284761c2390e4 100644
--- a/test/metabase/query_processor/middleware/parameters/date_test.clj
+++ b/test/metabase/query_processor/middleware/parameters/date_test.clj
@@ -18,19 +18,25 @@
 (expect {:end "2016-04-18"}                      (test-date->range "~2016-04-18"))
 
 (expect {:end "2016-06-06", :start "2016-06-04"} (test-date->range "past3days"))
+(expect {:end "2016-06-07", :start "2016-06-04"} (test-date->range "past3days~"))
 (expect {:end "2016-06-06", :start "2016-05-31"} (test-date->range "past7days"))
 (expect {:end "2016-06-06", :start "2016-05-08"} (test-date->range "past30days"))
 (expect {:end "2016-05-31", :start "2016-04-01"} (test-date->range "past2months"))
+(expect {:end "2016-06-30", :start "2016-04-01"} (test-date->range "past2months~"))
 (expect {:end "2016-05-31", :start "2015-05-01"} (test-date->range "past13months"))
 (expect {:end "2015-12-31", :start "2015-01-01"} (test-date->range "past1years"))
+(expect {:end "2016-12-31", :start "2015-01-01"} (test-date->range "past1years~"))
 (expect {:end "2015-12-31", :start "2000-01-01"} (test-date->range "past16years"))
 
 (expect {:end "2016-06-10", :start "2016-06-08"} (test-date->range "next3days"))
+(expect {:end "2016-06-10", :start "2016-06-07"} (test-date->range "next3days~"))
 (expect {:end "2016-06-14", :start "2016-06-08"} (test-date->range "next7days"))
 (expect {:end "2016-07-07", :start "2016-06-08"} (test-date->range "next30days"))
 (expect {:end "2016-08-31", :start "2016-07-01"} (test-date->range "next2months"))
+(expect {:end "2016-08-31", :start "2016-06-01"} (test-date->range "next2months~"))
 (expect {:end "2017-07-31", :start "2016-07-01"} (test-date->range "next13months"))
 (expect {:end "2017-12-31", :start "2017-01-01"} (test-date->range "next1years"))
+(expect {:end "2017-12-31", :start "2016-01-01"} (test-date->range "next1years~"))
 (expect {:end "2032-12-31", :start "2017-01-01"} (test-date->range "next16years"))
 
 (expect {:end "2016-06-07", :start "2016-06-07"} (test-date->range "thisday"))