Skip to content

Commit 8f9b2b9

Browse files
committed
fixed #228
1 parent 7e2e720 commit 8f9b2b9

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2119,10 +2119,11 @@ JsonExpression JsonExpression() : {
21192119
IntervalExpression IntervalExpression() : {
21202120
IntervalExpression interval = new IntervalExpression();
21212121
Token token;
2122+
boolean signed = false;
21222123
}
21232124
{
2124-
<K_INTERVAL> (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL>)
2125-
{ interval.setParameter(token.image); }
2125+
<K_INTERVAL> ["-" {signed=true;}] (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL>)
2126+
{ interval.setParameter((signed?"-":"") + token.image); }
21262127
[ LOOKAHEAD(2) token = <S_IDENTIFIER> { interval.setIntervalType(token.image); } ]
21272128
{
21282129
return interval;

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,6 +1609,11 @@ public void testInterval4() throws JSQLParserException {
16091609
String stmt = "SELECT '2008-12-31 23:59:59' + INTERVAL 1 SECOND";
16101610
assertSqlCanBeParsedAndDeparsed(stmt);
16111611
}
1612+
1613+
public void testInterval5_Issue228() throws JSQLParserException {
1614+
assertSqlCanBeParsedAndDeparsed("SELECT ADDDATE(timeColumn1, INTERVAL 420 MINUTES) AS timeColumn1 FROM tbl");
1615+
assertSqlCanBeParsedAndDeparsed("SELECT ADDDATE(timeColumn1, INTERVAL -420 MINUTES) AS timeColumn1 FROM tbl");
1616+
}
16121617

16131618
public void testMultiValueIn() throws JSQLParserException {
16141619
String stmt = "SELECT * FROM mytable WHERE (a, b, c) IN (SELECT a, b, c FROM mytable2)";

0 commit comments

Comments
 (0)