MaxGekk opened a new pull request #26446: [SPARK-29393][SQL] Add 
`make_interval` function
URL: https://github.com/apache/spark/pull/26446
 
 
   ### What changes were proposed in this pull request?
   In the PR, I propose new expression `MakeInterval` and register it as the 
function `make_interval`. The function accepts the following parameters:
   - `years` - the number of years in the interval, positive or negative. The 
parameter is multiplied by 12, and added to interval's `months`.
   - `months` - the number of months in the interval, positive or negative.
   - `weeks` - the number of months in the interval, positive or negative. The 
parameter is multiplied by 7, and added to interval's `days`.
   - `hours`, `mins` - the number of hours and minutes. The parameters can be 
negative or positive. They are converted to microseconds and added to 
interval's `microseconds`.
   - `seconds` - the number of seconds with the fractional part in microseconds 
precision. It is converted to microseconds, and added to total interval's 
`microseconds` as `hours` and `minutes`.
   
   For example:
   ```sql
   spark-sql> select make_interval(2019, 11, 1, 1, 12, 30, 01.001001);
   2019 years 11 months 8 days 12 hours 30 minutes 1.001001 seconds
   ```
   
   ### Why are the changes needed?
   - To improve user experience with Spark SQL, and allow users making 
`INTERVAL` columns from other columns containing `years`, `months` ... 
`seconds`. Currently, users can make an `INTERVAL` column from other columns 
only by constructing a `STRING` column and cast it to `INTERVAL`. Have a look 
at the `IntervalBenchmark` as an example.
   - To maintain feature parity with PostgreSQL which provides such function:
   ```sql
   # SELECT make_interval(2019, 11);
      make_interval
   --------------------
    2019 years 11 mons
   ``` 
   
   ### Does this PR introduce any user-facing change?
   No
   
   ### How was this patch tested?
   - By new tests for the `MakeInterval` expression to 
`IntervalExpressionsSuite`
   - By tests in `interval.sql`
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to