Skip to content

Commit 0e1a1fb

Browse files
authored
fix(optimizer): don't use datetrunc type for right side (#3614)
* fix(optimizer): don't use datetrunc type for right side * fixup
1 parent 6194c0f commit 0e1a1fb

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

sqlglot/optimizer/simplify.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,7 +1034,7 @@ def simplify_datetrunc(expression: exp.Expression, dialect: Dialect) -> exp.Expr
10341034

10351035
return (
10361036
DATETRUNC_BINARY_COMPARISONS[comparison](
1037-
trunc_arg, date, unit, dialect, extract_type(trunc_arg, r)
1037+
trunc_arg, date, unit, dialect, extract_type(r)
10381038
)
10391039
or expression
10401040
)
@@ -1060,7 +1060,7 @@ def simplify_datetrunc(expression: exp.Expression, dialect: Dialect) -> exp.Expr
10601060
return expression
10611061

10621062
ranges = merge_ranges(ranges)
1063-
target_type = extract_type(l, *rs)
1063+
target_type = extract_type(*rs)
10641064

10651065
return exp.or_(
10661066
*[_datetrunc_eq_expression(l, drange, target_type) for drange in ranges], copy=False

tests/fixtures/optimizer/simplify.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1047,6 +1047,9 @@ x < CAST('2021-01-02' AS DATE) AND x >= CAST('2021-01-01' AS DATE);
10471047
TIMESTAMP_TRUNC(x, YEAR) = CAST(CAST('2021-01-01 01:02:03' AS DATE) AS DATETIME);
10481048
x < CAST('2022-01-01 00:00:00' AS DATETIME) AND x >= CAST('2021-01-01 00:00:00' AS DATETIME);
10491049

1050+
DATE_TRUNC('day', CAST(x AS DATE)) <= CAST('2021-01-01 01:02:03' AS TIMESTAMP);
1051+
CAST(x AS DATE) < CAST('2021-01-02 01:02:03' AS TIMESTAMP);
1052+
10501053
--------------------------------------
10511054
-- EQUALITY
10521055
--------------------------------------

0 commit comments

Comments
 (0)