From bb871723a71db2d8a8a97a028f7421d17564814d Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Fri, 7 Jun 2019 15:23:47 +0200 Subject: [PATCH] [jOOQ/jOOQ#8760] [jOOQ/jOOQ#7518] Parse TIMESTAMPDIFF() The parser now supports parsing the TIMESTAMPDIFF() function, which is mapped to DSL#timestampDiff(). --- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 3403684308..676f0bbaf7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -5743,6 +5743,8 @@ final class ParserImpl implements Parser { return field; else if ((field = parseFieldToTimestampIf(ctx)) != null) return field; + else if ((field = parseFieldTimestampDiffIf(ctx)) != null) + return field; if (N.is(type) || D.is(type)) if ((field = parseFieldTruncIf(ctx)) != null) @@ -7065,6 +7067,20 @@ final class ParserImpl implements Parser { return null; } + private static final Field parseFieldTimestampDiffIf(ParserContext ctx) { + if (parseFunctionNameIf(ctx, "TIMESTAMPDIFF")) { + parse(ctx, '('); + Field ts1 = (Field) parseField(ctx, Type.D); + parse(ctx, ','); + Field ts2 = (Field) parseField(ctx, Type.D); + parse(ctx, ')'); + + return DSL.timestampDiff(ts1, ts2); + } + + return null; + } + private static final Field parseFieldRtrimIf(ParserContext ctx) { if (parseFunctionNameIf(ctx, "RTRIM")) { parse(ctx, '(');