Support for extract(x from time) / date_part from time types#8693
Support for extract(x from time) / date_part from time types#8693alamb merged 3 commits intoapache:mainfrom
extract(x from time) / date_part from time types#8693Conversation
|
Depends on apache/arrow-rs#5262 Will keep this in draft until arrow-rs support is merged and available to Datafusion (Also need to update docs) |
|
Release of arrow is tracked by apache/arrow-rs#5234 |
|
Pending apache/arrow-rs#5337 which will come as part of arrow-rs v51.0.0 (next release) |
99f2073 to
8e32ea8
Compare
| /// | ||
| /// # Panics | ||
| /// If `array` is not a temporal type such as Timestamp or Date32 |
There was a problem hiding this comment.
Realized my previous comment #9613 (comment) was incorrect about panics since it'll just return an error, so correcting here
| query R | ||
| SELECT date_part('microsecond', arrow_cast('23:32:50.123456789'::time, 'Time64(Nanosecond)')) | ||
| ---- | ||
| 50123456.789000005 |
There was a problem hiding this comment.
Just floating point stuff
Not sure if want to look into it further or not
| } | ||
| Date32 => as_date32_array(array)?.unary(|x| x as f64 * SECONDS_IN_A_DAY), | ||
| Date64 => as_date64_array(array)?.unary(|x| x as f64 / 1_000_f64), | ||
| Time32(Second) => as_time32_second_array(array)?.unary(|x| x as f64), |
| ---- | ||
| 12123456780 | ||
|
|
||
| # test_date_part_time |
There was a problem hiding this comment.
Is it also worth testing the EXTRACT (...) syntax too ?
like EXTRACT( hour from arrow_cast('23:32:50'::time, 'Time32(Second)')))?
There was a problem hiding this comment.
Good point, added 👍
| query R | ||
| SELECT date_part('microsecond', arrow_cast('23:32:50.123456789'::time, 'Time64(Nanosecond)')) | ||
| ---- | ||
| 50123456.789000005 |
extract(x from time)extract(x from time) / date_part from time types
Which issue does this PR close?
Closes #8692
Rationale for this change
What changes are included in this PR?
Extend support for
extractanddate_parttoTime32andTime64types, for relevant precisions (hours, minutes, seconds, etc.)Are these changes tested?
Are there any user-facing changes?