diff --git a/src/query/sql/src/planner/semantic/type_check.rs b/src/query/sql/src/planner/semantic/type_check.rs index 8bc71e0ad94e6..7b531f4c667ae 100644 --- a/src/query/sql/src/planner/semantic/type_check.rs +++ b/src/query/sql/src/planner/semantic/type_check.rs @@ -3004,6 +3004,16 @@ impl<'a> TypeChecker<'a> { &[date], ) } + ASTIntervalKind::Week => { + self.resolve_function( + span, + "to_start_of_week", vec![], + &[date, &Expr::Literal { + span: None, + value: Literal::UInt64(1) + }], + ) + } ASTIntervalKind::Day => { self.resolve_function( span, diff --git a/tests/sqllogictests/suites/query/functions/02_0012_function_datetimes.test b/tests/sqllogictests/suites/query/functions/02_0012_function_datetimes.test index 2964c4f9a5b74..281cf4f0cbf36 100644 --- a/tests/sqllogictests/suites/query/functions/02_0012_function_datetimes.test +++ b/tests/sqllogictests/suites/query/functions/02_0012_function_datetimes.test @@ -272,6 +272,16 @@ SELECT max(MONTHS_BETWEEN(mine_date, birth_date))/12 as demo_age FROM t GROUP BY statement ok drop table if exists t; +query T +select date_trunc('month', '2025-02-05 00:01:00'); +---- +2025-02-01 + +query T +select date_trunc('week', '2025-02-05 00:01:00'); +---- +2025-02-03 + query FF SELECT MONTHS_BETWEEN('2019-03-15'::DATE,