Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature][SDK] Transform SQL supports INTERVAL parse #11081

Open
2 tasks done
Zkplo opened this issue Sep 11, 2024 · 0 comments · May be fixed by #11086
Open
2 tasks done

[Feature][SDK] Transform SQL supports INTERVAL parse #11081

Zkplo opened this issue Sep 11, 2024 · 0 comments · May be fixed by #11086
Assignees
Milestone

Comments

@Zkplo
Copy link
Contributor

Zkplo commented Sep 11, 2024

Description

interval_expr in expressions represents a temporal interval. Intervals have this syntax:

INTERVAL expr unit

expr represents a quantity. unit represents the unit for interpreting the quantity; it is a specifier such as HOUR, DAY, or WEEK. The INTERVAL keyword and the unit specifier are not case-sensitive.The following table shows the expected form of the expr argument for each unit value.

unit Value Expected expr Format
MICROSECOND MICROSECONDS
SECOND SECONDS
MINUTE MINUTES
HOUR HOURS
DAY DAYS
WEEK WEEKS
MONTH MONTHS
QUARTER QUARTERS
YEAR YEARS
SECOND_MICROSECOND 'SECONDS.MICROSECONDS'
MINUTE_MICROSECOND 'MINUTES:SECONDS.MICROSECONDS'
MINUTE_SECOND 'MINUTES:SECONDS'
HOUR_MICROSECOND 'HOURS:MINUTES:SECONDS.MICROSECONDS'
HOUR_SECOND 'HOURS:MINUTES:SECONDS'
HOUR_MINUTE 'HOURS:MINUTES'
DAY_MICROSECOND 'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'
DAY_SECOND 'DAYS HOURS:MINUTES:SECONDS'
DAY_MINUTE 'DAYS HOURS:MINUTES'
DAY_HOUR 'DAYS HOURS'
YEAR_MONTH 'YEARS-MONTHS'

Use case

DATE_ADD('2018-05-01',INTERVAL 1 DAY)                                            -> '2018-05-02'
DATE_SUB('2018-05-01',INTERVAL 1 YEAR)                                           -> '2017-05-01'
DATE_ADD('2020-12-31 23:59:59',  INTERVAL 1 SECOND);                             ->  '2021-01-01 00:00:00'
DATE_ADD('2018-12-31 23:59:59', INTERVAL 1 DAY);                                 -> '2019-01-01 23:59:59'
DATE_ADD('2100-12-31 23:59:59', INTERVAL '1:1' MINUTE_SECOND);                   -> '2101-01-01 00:01:00'
DATE_SUB('2025-01-01 00:00:00', INTERVAL '1 1:1:1' DAY_SECOND);                  -> '2024-12-30 22:58:59'
DATE_ADD('1900-01-01 00:00:00', INTERVAL '-1 10' DAY_HOUR);                      -> '1899-12-30 14:00:00'
DATE_SUB('1998-01-02', INTERVAL 31 DAY);                                         -> '1997-12-02'
DATE_ADD('1992-12-31 23:59:59.000002', INTERVAL '1.999999' SECOND_MICROSECOND);  -> '1993-01-01 00:00:01.000001'


'2018-12-31 23:59:59' + INTERVAL 1 SECOND;                                       -> '2019-01-01 00:00:00'
INTERVAL 1 DAY + '2018-12-31';                                                   -> '2019-01-01'
'2025-01-01' - INTERVAL 1 SECOND;                                                -> '2024-12-31 23:59:59'

Are you willing to submit PR?

  • Yes, I am willing to submit a PR!

Code of Conduct

@Zkplo Zkplo linked a pull request Sep 12, 2024 that will close this issue
3 tasks
@dockerzhang dockerzhang added this to the 1.14.0 milestone Sep 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants