diff --git a/superset/utils/date_parser.py b/superset/utils/date_parser.py index fa0739076a8..15e021a64c9 100644 --- a/superset/utils/date_parser.py +++ b/superset/utils/date_parser.py @@ -210,11 +210,11 @@ def get_since_until( lambda unit: f"DATEADD(DATETIME('{_relative_start}'), -1, {unit})", ), ( - r"^last\s+([0-9]+)\s+(second|minute|hour|day|week|month|year)s$", + r"^last\s+([0-9]+)\s+(second|minute|hour|day|week|month|year)s?$", lambda delta, unit: f"DATEADD(DATETIME('{_relative_start}'), -{int(delta)}, {unit})", # pylint: disable=line-too-long ), ( - r"^next\s+([0-9]+)\s+(second|minute|hour|day|week|month|year)s$", + r"^next\s+([0-9]+)\s+(second|minute|hour|day|week|month|year)s?$", lambda delta, unit: f"DATEADD(DATETIME('{_relative_end}'), {int(delta)}, {unit})", # pylint: disable=line-too-long ), ( diff --git a/tests/utils/date_parser_tests.py b/tests/utils/date_parser_tests.py index b03b612c10a..2d5cb2264de 100644 --- a/tests/utils/date_parser_tests.py +++ b/tests/utils/date_parser_tests.py @@ -88,10 +88,18 @@ class TestDateParser(SupersetTestCase): expected = datetime(2016, 6, 7), datetime(2016, 11, 7) self.assertEqual(result, expected) + result = get_since_until("Last 1 month") + expected = datetime(2016, 10, 7), datetime(2016, 11, 7) + self.assertEqual(result, expected) + result = get_since_until("Next 5 months") expected = datetime(2016, 11, 7), datetime(2017, 4, 7) self.assertEqual(result, expected) + result = get_since_until("Next 1 month") + expected = datetime(2016, 11, 7), datetime(2016, 12, 7) + self.assertEqual(result, expected) + result = get_since_until(since="5 days") expected = datetime(2016, 11, 2), datetime(2016, 11, 7) self.assertEqual(result, expected)