You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by al...@apache.org on 2025/08/11 19:20:11 UTC
(datafusion) branch main updated: feat: add `isodow` (ISO day-of-week) support to date_part (Monday = 0) (#17112)
This is an automated email from the ASF dual-hosted git repository.
alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new ceab1e1653 feat: add `isodow` (ISO day-of-week) support to date_part (Monday = 0) (#17112)
ceab1e1653 is described below
commit ceab1e1653f5c1f0208f35a07322cf5c70e47a87
Author: ayemjay <ay...@users.noreply.github.com>
AuthorDate: Mon Aug 11 20:20:07 2025 +0100
feat: add `isodow` (ISO day-of-week) support to date_part (Monday = 0) (#17112)
* Add support for 'isodow' in date_part function and corresponding SQL tests
* Update documentation for date_part function to clarify 'dow' and add 'isodow' support
---
datafusion/functions/src/datetime/date_part.rs | 4 +++-
.../sqllogictest/test_files/expr/date_part.slt | 20 ++++++++++++++++++++
docs/source/user-guide/sql/scalar_functions.md | 3 ++-
3 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/datafusion/functions/src/datetime/date_part.rs b/datafusion/functions/src/datetime/date_part.rs
index 743cdeb1d3..6b844b7cf3 100644
--- a/datafusion/functions/src/datetime/date_part.rs
+++ b/datafusion/functions/src/datetime/date_part.rs
@@ -68,9 +68,10 @@ use datafusion_macros::user_doc;
- millisecond
- microsecond
- nanosecond
- - dow (day of the week)
+ - dow (day of the week where Sunday is 0)
- doy (day of the year)
- epoch (seconds since Unix epoch)
+ - isodow (day of the week where Monday is 0)
"#
),
argument(
@@ -217,6 +218,7 @@ impl ScalarUDFImpl for DatePartFunc {
"qtr" | "quarter" => date_part(array.as_ref(), DatePart::Quarter)?,
"doy" => date_part(array.as_ref(), DatePart::DayOfYear)?,
"dow" => date_part(array.as_ref(), DatePart::DayOfWeekSunday0)?,
+ "isodow" => date_part(array.as_ref(), DatePart::DayOfWeekMonday0)?,
"epoch" => epoch(array.as_ref())?,
_ => return exec_err!("Date part '{part}' not supported"),
}
diff --git a/datafusion/sqllogictest/test_files/expr/date_part.slt b/datafusion/sqllogictest/test_files/expr/date_part.slt
index 39c42cbe1e..df17a8bca9 100644
--- a/datafusion/sqllogictest/test_files/expr/date_part.slt
+++ b/datafusion/sqllogictest/test_files/expr/date_part.slt
@@ -1070,3 +1070,23 @@ true
query error DataFusion error: This feature is not implemented: Date part Nanosecond not supported
SELECT (date_part('nanosecond', now()) = EXTRACT(nanosecond FROM now()))
+
+query I
+SELECT date_part('ISODOW', CAST('2000-01-01' AS DATE))
+----
+5
+
+query I
+SELECT EXTRACT(isodow FROM to_timestamp('2020-09-08T12:00:00+00:00'))
+----
+1
+
+query I
+SELECT EXTRACT("isodow" FROM to_timestamp('2020-09-08T12:00:00+00:00'))
+----
+1
+
+query I
+SELECT EXTRACT('isodow' FROM to_timestamp('2020-09-08T12:00:00+00:00'))
+----
+1
\ No newline at end of file
diff --git a/docs/source/user-guide/sql/scalar_functions.md b/docs/source/user-guide/sql/scalar_functions.md
index d49fc22dab..6de2c411b0 100644
--- a/docs/source/user-guide/sql/scalar_functions.md
+++ b/docs/source/user-guide/sql/scalar_functions.md
@@ -2114,9 +2114,10 @@ date_part(part, expression)
- millisecond
- microsecond
- nanosecond
- - dow (day of the week)
+ - dow (day of the week where Sunday is 0)
- doy (day of the year)
- epoch (seconds since Unix epoch)
+ - isodow (day of the week where Monday is 0)
- **expression**: Time expression to operate on. Can be a constant, column, or function.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org