diff --git a/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj b/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj index c36131756..5c89f23b9 100644 --- a/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj +++ b/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj @@ -1555,7 +1555,7 @@ ExtractExpression ExtractExpression() : "(" token= { retval.setName(token.image); } - expr=PrimaryExpression() { retval.setExpression(expr); } + expr=SimpleExpression() { retval.setExpression(expr); } ")" { return retval; diff --git a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java index f43822880..05c29653c 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java @@ -763,6 +763,16 @@ public void testExtractFrom2() throws JSQLParserException { String stmt = "SELECT EXTRACT(year FROM now()) FROM testtable"; assertSqlCanBeParsedAndDeparsed(stmt); } + + public void testExtractFrom3() throws JSQLParserException { + String stmt = "SELECT EXTRACT(year FROM (now() - 2)) FROM testtable"; + assertSqlCanBeParsedAndDeparsed(stmt); + } + + public void testExtractFrom4() throws JSQLParserException { + String stmt = "SELECT EXTRACT(minutes FROM now() - '01:22:00') FROM testtable"; + assertSqlCanBeParsedAndDeparsed(stmt); + } public void testProblemFunction() throws JSQLParserException { String stmt = "SELECT test() FROM testtable";