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