[jOOQ/jOOQ#2620] Add support for BigQuery DATE_DIFF and TIMESTAMP_DIFF

This commit is contained in:
Lukas Eder 2021-06-01 14:19:52 +02:00
parent d6189e5514
commit 078d4cc440
4 changed files with 26 additions and 0 deletions

View File

@ -49,7 +49,10 @@ import static org.jooq.SQLDialect.FIREBIRD;
import static org.jooq.SQLDialect.HSQLDB;
import static org.jooq.impl.DSL.function;
import static org.jooq.impl.DSL.inline;
import static org.jooq.impl.Keywords.K_DAY;
import static org.jooq.impl.Keywords.K_MILLISECOND;
import static org.jooq.impl.Names.N_DATEDIFF;
import static org.jooq.impl.Names.N_DATE_DIFF;
import static org.jooq.impl.Names.N_DAYS;
import static org.jooq.impl.Names.N_DAYS_BETWEEN;
import static org.jooq.impl.Names.N_SQL_TSI_DAY;
@ -59,6 +62,7 @@ import static org.jooq.impl.Names.N_SQL_TSI_MINUTE;
import static org.jooq.impl.Names.N_SQL_TSI_SECOND;
import static org.jooq.impl.Names.N_STRFTIME;
import static org.jooq.impl.Names.N_TIMESTAMPDIFF;
import static org.jooq.impl.Names.N_TIMESTAMP_DIFF;
import static org.jooq.impl.SQLDataType.TIMESTAMP;
import static org.jooq.impl.Tools.castIfNeeded;
@ -211,6 +215,10 @@ final class DateDiff<T> extends AbstractField<Integer> {
case SQLITE:
ctx.sql('(').visit(N_STRFTIME).sql("('%s', ").visit(endDate).sql(") - ").visit(N_STRFTIME).sql("('%s', ").visit(startDate).sql(")) / 86400");
return;

View File

@ -353,6 +353,7 @@ final class Names {
static final Name N_TAU = unquotedName("tau");
static final Name N_TIMESTAMPADD = unquotedName("timestampadd");
static final Name N_TIMESTAMPDIFF = unquotedName("timestampdiff");
static final Name N_TIMESTAMP_DIFF = unquotedName("timestamp_diff");
static final Name N_TO_CHAR = unquotedName("to_char");
static final Name N_TO_CLOB = unquotedName("to_clob");
static final Name N_TO_DATE = unquotedName("to_date");

View File

@ -9236,6 +9236,18 @@ final class DefaultParseContext extends AbstractScope implements ParseContext {
throw unsupportedClause();
}
return null;
}

View File

@ -45,6 +45,7 @@ import static org.jooq.impl.Names.N_DAYS;
import static org.jooq.impl.Names.N_NANO100_BETWEEN;
import static org.jooq.impl.Names.N_STRFTIME;
import static org.jooq.impl.Names.N_TIMESTAMPDIFF;
import static org.jooq.impl.Names.N_TIMESTAMP_DIFF;
import static org.jooq.impl.SQLDataType.INTEGER;
import static org.jooq.impl.SQLDataType.INTERVALDAYTOSECOND;
import static org.jooq.impl.Tools.castIfNeeded;
@ -114,6 +115,10 @@ final class TimestampDiff extends AbstractField<DayToSecond> {