[#7320] Support parsing Oracle TO_DATE() and TO_TIMESTAMP() functions
This commit is contained in:
parent
cc6ed7f861
commit
f8314b6b7b
@ -204,6 +204,8 @@ import static org.jooq.impl.DSL.tan;
|
||||
import static org.jooq.impl.DSL.tanh;
|
||||
import static org.jooq.impl.DSL.time;
|
||||
import static org.jooq.impl.DSL.timestamp;
|
||||
import static org.jooq.impl.DSL.toDate;
|
||||
import static org.jooq.impl.DSL.toTimestamp;
|
||||
import static org.jooq.impl.DSL.translate;
|
||||
import static org.jooq.impl.DSL.trim;
|
||||
import static org.jooq.impl.DSL.trunc;
|
||||
@ -4356,6 +4358,10 @@ final class ParserImpl implements Parser {
|
||||
return field;
|
||||
else if ((field = parseFieldTimeLiteralIf(ctx)) != null)
|
||||
return field;
|
||||
else if ((field = parseFieldToDateIf(ctx)) != null)
|
||||
return field;
|
||||
else if ((field = parseFieldToTimestampIf(ctx)) != null)
|
||||
return field;
|
||||
|
||||
if (N.is(type) || D.is(type))
|
||||
if ((field = parseFieldTruncIf(ctx)) != null)
|
||||
@ -5088,6 +5094,34 @@ final class ParserImpl implements Parser {
|
||||
return null;
|
||||
}
|
||||
|
||||
private static final Field<?> parseFieldToDateIf(ParserContext ctx) {
|
||||
if (parseFunctionNameIf(ctx, "TO_DATE")) {
|
||||
parse(ctx, '(');
|
||||
Field<String> f1 = (Field) parseField(ctx, S);
|
||||
parse(ctx, ',');
|
||||
Field<String> f2 = (Field) parseField(ctx, S);
|
||||
parse(ctx, ')');
|
||||
|
||||
return toDate(f1, f2);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static final Field<?> parseFieldToTimestampIf(ParserContext ctx) {
|
||||
if (parseFunctionNameIf(ctx, "TO_TIMESTAMP")) {
|
||||
parse(ctx, '(');
|
||||
Field<String> f1 = (Field) parseField(ctx, S);
|
||||
parse(ctx, ',');
|
||||
Field<String> f2 = (Field) parseField(ctx, S);
|
||||
parse(ctx, ')');
|
||||
|
||||
return toTimestamp(f1, f2);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private static final Field<?> parseFieldRtrimIf(ParserContext ctx) {
|
||||
if (parseFunctionNameIf(ctx, "RTRIM")) {
|
||||
parse(ctx, '(');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user