File tree Expand file tree Collapse file tree 2 files changed +15
-2
lines changed
main/jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/select Expand file tree Collapse file tree 2 files changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -3018,13 +3018,20 @@ JsonExpression JsonExpression() : {
30183018
30193019IntervalExpression IntervalExpression() : {
30203020 IntervalExpression interval;
3021+ Column col;
30213022 Token token;
30223023 boolean signed = false;
30233024}
30243025{
30253026 { interval = new IntervalExpression(); }
3026- <K_INTERVAL> ["-" {signed=true;}] (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> )
3027- { interval.setParameter((signed?"-":"") + token.image); }
3027+ <K_INTERVAL> ["-" {signed=true;}]
3028+ (
3029+ ((token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> )
3030+ { interval.setParameter((signed?"-":"") + token.image); })
3031+ |
3032+ (col=Column()
3033+ { interval.setExpression(col); })
3034+ )
30283035 [ LOOKAHEAD(2) (token = <S_IDENTIFIER> | token = <K_DATE_LITERAL>) { interval.setIntervalType(token.image); } ]
30293036 {
30303037 return interval;
Original file line number Diff line number Diff line change @@ -2182,6 +2182,12 @@ public void testValues6BothVariants() throws JSQLParserException {
21822182 assertSqlCanBeParsedAndDeparsed (stmt );
21832183 }
21842184
2185+ @ Test
2186+ public void testIntervalWithColumn () throws JSQLParserException {
2187+ String stmt = "SELECT DATE_ADD(start_date, INTERVAL duration MINUTE) AS end_datetime FROM appointment" ;
2188+ assertSqlCanBeParsedAndDeparsed (stmt );
2189+ }
2190+
21852191 @ Test
21862192 public void testInterval1 () throws JSQLParserException {
21872193 String stmt = "SELECT 5 + INTERVAL '3 days'" ;
You can’t perform that action at this time.
0 commit comments