mirror of
https://github.com/apache/superset.git
synced 2026-04-24 10:35:01 +00:00
feat: datediff in datetime_parser (#27368)
Co-authored-by: Yongjie Zhao <yongjie.zhao@burda-forward.de>
This commit is contained in:
@@ -65,6 +65,8 @@ def mock_parse_human_datetime(s: str) -> Optional[datetime]:
|
||||
return datetime(2000, 1, 1)
|
||||
elif s == "2018-01-01T00:00:00":
|
||||
return datetime(2018, 1, 1)
|
||||
elif s == "2018-01-10T00:00:00":
|
||||
return datetime(2018, 1, 10)
|
||||
elif s == "2018-12-31T23:59:59":
|
||||
return datetime(2018, 12, 31, 23, 59, 59)
|
||||
elif s == "2022-01-01T00:00:00":
|
||||
@@ -366,6 +368,36 @@ def test_datetime_eval() -> None:
|
||||
expected = datetime(2018, 2, 28, 0, 0, 0)
|
||||
assert result == expected
|
||||
|
||||
result = datetime_eval(
|
||||
"datediff(datetime('2018-01-01T00:00:00'), datetime('2018-01-10T00:00:00'))" # pylint: disable=line-too-long,useless-suppression
|
||||
)
|
||||
assert result == 9
|
||||
|
||||
result = datetime_eval(
|
||||
"datediff(datetime('2018-01-10T00:00:00'), datetime('2018-01-01T00:00:00'))" # pylint: disable=line-too-long,useless-suppression
|
||||
)
|
||||
assert result == -9
|
||||
|
||||
result = datetime_eval(
|
||||
"datediff(datetime('2018-01-01T00:00:00'), datetime('2018-01-10T00:00:00'), day)" # pylint: disable=line-too-long,useless-suppression
|
||||
)
|
||||
assert result == 9
|
||||
|
||||
result = datetime_eval(
|
||||
"datediff(datetime('2018-01-01T00:00:00'), datetime('2018-01-10T00:00:00'), year)" # pylint: disable=line-too-long,useless-suppression
|
||||
)
|
||||
assert result == 0
|
||||
|
||||
result = datetime_eval(
|
||||
"dateadd("
|
||||
"datetime('2018-01-01T00:00:00'), "
|
||||
"datediff(datetime('2018-01-10T00:00:00'), datetime('2018-01-01T00:00:00')), " # pylint: disable=line-too-long,useless-suppression
|
||||
"day,"
|
||||
"),"
|
||||
)
|
||||
expected = datetime(2017, 12, 23, 0, 0, 0)
|
||||
assert result == expected
|
||||
|
||||
|
||||
@patch("superset.utils.date_parser.datetime")
|
||||
def test_parse_human_timedelta(mock_datetime: Mock) -> None:
|
||||
|
||||
Reference in New Issue
Block a user