Skip to content

Commit 41fbb64

Browse files
committed
Merge origin/master
2 parents 55974c3 + 8764b8f commit 41fbb64

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3018,13 +3018,20 @@ JsonExpression JsonExpression() : {
30183018

30193019
IntervalExpression 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;

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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'";

0 commit comments

Comments
 (0)