diff --git a/docs/docs-en/source/5.application-development/2.dsl/3.build-in/date.md b/docs/docs-en/source/5.application-development/2.dsl/3.build-in/date.md index 0b61380fb..ed01427f5 100644 --- a/docs/docs-en/source/5.application-development/2.dsl/3.build-in/date.md +++ b/docs/docs-en/source/5.application-development/2.dsl/3.build-in/date.md @@ -12,6 +12,8 @@ GeaFlow support the following date function: * [lastday](#lastday) * [day_of_month](#day_of_month) * [week_of_year](#week_of_year) +* [quarter](#quarter) +* [day_of_year](#day_of_year) * [date_add](#date_add) * [date_sub](#date_sub) * [date_diff](#date_diff) @@ -205,7 +207,34 @@ Returns the week of the year of the given date. The default format is "yyyy-MM-d ```sql week_of_year('1987-06-05 00:11:22') = 23 ``` +## quarter +**Syntax** + +```sql +int quarter(string dateString) +``` + +**Description** +Returns the quarter of the year of the given date (1-4). The default format is "yyyy-MM-dd" or "yyyy-MM-dd HH:mm:ss". Returns null if the input is null. + +**Example** +```sql +quarter('1987-06-05 00:11:22') = 2 +``` +## day_of_year +**Syntax** + +```sql +int day_of_year(string dateString) +``` +**Description** +Returns the day of the year of the given date (1-366). The default format is "yyyy-MM-dd" or "yyyy-MM-dd HH:mm:ss". Returns null if the input is null. + +**Example** +```sql +day_of_year('1987-06-05 00:11:22') = 156 +``` ## date_add **Syntax** diff --git a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/schema/function/BuildInSqlFunctionTable.java b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/schema/function/BuildInSqlFunctionTable.java index 9656d9299..62ba9ec5c 100644 --- a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/schema/function/BuildInSqlFunctionTable.java +++ b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/schema/function/BuildInSqlFunctionTable.java @@ -83,6 +83,8 @@ import org.apache.geaflow.dsl.udf.table.date.UnixTimeStampMillis; import org.apache.geaflow.dsl.udf.table.date.WeekDay; import org.apache.geaflow.dsl.udf.table.date.WeekOfYear; +import org.apache.geaflow.dsl.udf.table.date.Quarter; +import org.apache.geaflow.dsl.udf.table.date.DayOfYear; import org.apache.geaflow.dsl.udf.table.date.Year; import org.apache.geaflow.dsl.udf.table.math.Cbrt; import org.apache.geaflow.dsl.udf.table.math.E; @@ -132,6 +134,7 @@ import org.apache.geaflow.dsl.udf.table.string.UrlEncode; import org.apache.geaflow.dsl.util.FunctionUtil; + /** * SQL build-in {@link SqlFunction}s. */ @@ -167,6 +170,8 @@ public class BuildInSqlFunctionTable extends ListSqlOperatorTable { .add(GeaFlowFunction.of(UnixTimeStampMillis.class)) .add(GeaFlowFunction.of(WeekDay.class)) .add(GeaFlowFunction.of(WeekOfYear.class)) + .add(GeaFlowFunction.of(Quarter.class)) + .add(GeaFlowFunction.of(DayOfYear.class)) .add(GeaFlowFunction.of(Year.class)) // udf.table.array diff --git a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/DayOfYear.java b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/DayOfYear.java index 716423d91..db2b2ce34 100644 --- a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/DayOfYear.java +++ b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/DayOfYear.java @@ -1,4 +1,4 @@ -/* + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information diff --git a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/WeekOfYear.java b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/WeekOfYear.java index 31d3f3e85..29b77bf5f 100644 --- a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/WeekOfYear.java +++ b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/main/java/org/apache/geaflow/dsl/udf/table/date/WeekOfYear.java @@ -1,4 +1,4 @@ -/* + /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information diff --git a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/test/java/org/apache/geaflow/dsl/udf/date/UDFDateTest.java b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/test/java/org/apache/geaflow/dsl/udf/date/UDFDateTest.java index dea3c6263..c75a6af7a 100644 --- a/geaflow/geaflow-dsl/geaflow-dsl-plan/src/test/java/org/apache/geaflow/dsl/udf/date/UDFDateTest.java +++ b/geaflow/geaflow-dsl/geaflow-dsl-plan/src/test/java/org/apache/geaflow/dsl/udf/date/UDFDateTest.java @@ -48,6 +48,8 @@ import org.apache.geaflow.dsl.udf.table.date.UnixTimeStampMillis; import org.apache.geaflow.dsl.udf.table.date.WeekDay; import org.apache.geaflow.dsl.udf.table.date.WeekOfYear; +import org.apache.geaflow.dsl.udf.table.date.Quarter; +import org.apache.geaflow.dsl.udf.table.date.DayOfYear; import org.apache.geaflow.dsl.udf.table.date.Year; import org.testng.annotations.Test;