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 @@ -2955,13 +2955,20 @@ JsonExpression JsonExpression() : {
29552955
29562956IntervalExpression IntervalExpression() : {
29572957 IntervalExpression interval;
2958+ Column col;
29582959 Token token;
29592960 boolean signed = false;
29602961}
29612962{
29622963 { interval = new IntervalExpression(); }
2963- <K_INTERVAL> ["-" {signed=true;}] (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> )
2964- { interval.setParameter((signed?"-":"") + token.image); }
2964+ <K_INTERVAL> ["-" {signed=true;}]
2965+ (
2966+ ((token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> )
2967+ { interval.setParameter((signed?"-":"") + token.image); })
2968+ |
2969+ (col=Column()
2970+ { interval.setExpression(col); })
2971+ )
29652972 [ LOOKAHEAD(2) (token = <S_IDENTIFIER> | token = <K_DATE_LITERAL>) { interval.setIntervalType(token.image); } ]
29662973 {
29672974 return interval;
Original file line number Diff line number Diff line change @@ -2177,6 +2177,12 @@ public void testValues6BothVariants() throws JSQLParserException {
21772177 assertSqlCanBeParsedAndDeparsed (stmt );
21782178 }
21792179
2180+ @ Test
2181+ public void testIntervalWithColumn () throws JSQLParserException {
2182+ String stmt = "SELECT DATE_ADD(start_date, INTERVAL duration MINUTE) AS end_datetime FROM appointment" ;
2183+ assertSqlCanBeParsedAndDeparsed (stmt );
2184+ }
2185+
21802186 @ Test
21812187 public void testInterval1 () throws JSQLParserException {
21822188 String stmt = "SELECT 5 + INTERVAL '3 days'" ;
You can’t perform that action at this time.
0 commit comments