startDate) {
+ return new DateDiff<>(null, nullSafe(startDate), nullSafe(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field dateDiff(DatePart part, Date date1, Date date2) {
- return dateDiff(part, Tools.field(date1), Tools.field(date2));
+ public static Field dateDiff(DatePart part, Date startDate, Date endDate) {
+ return dateDiff(part, Tools.field(startDate), Tools.field(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field dateDiff(DatePart part, Field date1, Date date2) {
- return dateDiff(part, nullSafe(date1), Tools.field(date2));
+ public static Field dateDiff(DatePart part, Field startDate, Date endDate) {
+ return dateDiff(part, nullSafe(startDate), Tools.field(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field dateDiff(DatePart part, Date date1, Field date2) {
- return dateDiff(part, Tools.field(date1), nullSafe(date2));
+ public static Field dateDiff(DatePart part, Date startDate, Field endDate) {
+ return dateDiff(part, Tools.field(startDate), nullSafe(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field dateDiff(DatePart part, Field date1, Field date2) {
- return new DateDiff<>(part, nullSafe(date1), nullSafe(date2));
+ public static Field dateDiff(DatePart part, Field startDate, Field endDate) {
+ return new DateDiff<>(part, nullSafe(startDate), nullSafe(endDate));
}
/**
@@ -15664,83 +15680,99 @@ public class DSL {
/**
- * Get the date difference between date1 - date2 in number of
- * days.
+ * Get the date difference between endDate - startDate in
+ * number of days.
*
* @see Field#sub(Field)
*/
@Support
- public static Field localDateDiff(LocalDate date1, LocalDate date2) {
- return localDateDiff(Tools.field(date1), Tools.field(date2));
+ public static Field localDateDiff(LocalDate endDate, LocalDate startDate) {
+ return localDateDiff(Tools.field(endDate), Tools.field(startDate));
}
/**
- * Get the date difference between date1 - date2 in number of
- * days.
+ * Get the date difference between endDate - startDate in
+ * number of days.
*
* @see Field#sub(Field)
*/
@Support
- public static Field localDateDiff(Field date1, LocalDate date2) {
- return localDateDiff(nullSafe(date1), Tools.field(date2));
+ public static Field localDateDiff(Field endDate, LocalDate startDate) {
+ return localDateDiff(nullSafe(endDate), Tools.field(startDate));
}
/**
- * Get the date difference between date1 - date2 in number of
- * days.
+ * Get the date difference between endDate - startDate in
+ * number of days.
*
* @see Field#sub(Field)
*/
@Support
- public static Field localDateDiff(LocalDate date1, Field date2) {
- return localDateDiff(Tools.field(date1), nullSafe(date2));
+ public static Field localDateDiff(LocalDate endDate, Field startDate) {
+ return localDateDiff(Tools.field(endDate), nullSafe(startDate));
}
/**
- * Get the date difference between date1 - date2 in number of
- * days.
+ * Get the date difference between endDate - startDate in
+ * number of days.
*
* @see Field#sub(Field)
*/
@Support
- public static Field localDateDiff(Field date1, Field date2) {
- return new DateDiff<>(null, nullSafe(date1), nullSafe(date2));
+ public static Field localDateDiff(Field endDate, Field startDate) {
+ return new DateDiff<>(null, nullSafe(startDate), nullSafe(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field localDateDiff(DatePart part, LocalDate date1, LocalDate date2) {
- return localDateDiff(part, Tools.field(date1), Tools.field(date2));
+ public static Field localDateDiff(DatePart part, LocalDate startDate, LocalDate endDate) {
+ return localDateDiff(part, Tools.field(startDate), Tools.field(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field localDateDiff(DatePart part, Field date1, LocalDate date2) {
- return localDateDiff(part, nullSafe(date1), Tools.field(date2));
+ public static Field localDateDiff(DatePart part, Field startDate, LocalDate endDate) {
+ return localDateDiff(part, nullSafe(startDate), Tools.field(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field localDateDiff(DatePart part, LocalDate date1, Field date2) {
- return localDateDiff(part, Tools.field(date1), nullSafe(date2));
+ public static Field localDateDiff(DatePart part, LocalDate startDate, Field endDate) {
+ return localDateDiff(part, Tools.field(startDate), nullSafe(endDate));
}
/**
- * Get the date difference between date1 - date2 in terms of
- * part.
+ * Get the date difference between endDate - startDate in terms
+ * of part.
+ *
+ * For example, DATEDIFF(YEAR, '2000-03-01', '2002-01-01') = 2,
+ * despite there being less than 2 years between the two days. The behaviour
+ * replicates that of SQL Server.
*/
@Support({ FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES })
- public static Field localDateDiff(DatePart part, Field date1, Field date2) {
- return new DateDiff<>(part, nullSafe(date1), nullSafe(date2));
+ public static Field localDateDiff(DatePart part, Field startDate, Field endDate) {
+ return new DateDiff<>(part, nullSafe(startDate), nullSafe(endDate));
}
/**
diff --git a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java
index fce26438b6..270f3dfdf2 100644
--- a/jOOQ/src/main/java/org/jooq/impl/DateDiff.java
+++ b/jOOQ/src/main/java/org/jooq/impl/DateDiff.java
@@ -72,15 +72,15 @@ final class DateDiff extends AbstractField {
private static final long serialVersionUID = -4813228000332771961L;
private final DatePart part;
- private final Field date1;
- private final Field date2;
+ private final Field startDate;
+ private final Field endDate;
- DateDiff(DatePart part, Field date1, Field date2) {
+ DateDiff(DatePart part, Field startDate, Field endDate) {
super(N_DATEDIFF, SQLDataType.INTEGER);
this.part = part;
- this.date1 = date1;
- this.date2 = date2;
+ this.startDate = startDate;
+ this.endDate = endDate;
}
@Override
@@ -108,23 +108,23 @@ final class DateDiff extends AbstractField {
return;
case DAY:
- ctx.visit(N_DATEDIFF).sql('(').visit(date1).sql(", ").visit(date2).sql(')');
+ ctx.visit(N_DATEDIFF).sql('(').visit(endDate).sql(", ").visit(startDate).sql(')');
return;
case MILLISECOND:
- ctx.visit(new DateDiff<>(MICROSECOND, date1, date2).div(inline(1000)));
+ ctx.visit(new DateDiff<>(MICROSECOND, startDate, endDate).div(inline(1000)));
return;
case NANOSECOND:
- ctx.visit(new DateDiff<>(MICROSECOND, date1, date2).times(inline(1000)));
+ ctx.visit(new DateDiff<>(MICROSECOND, startDate, endDate).times(inline(1000)));
return;
}
- ctx.visit(N_TIMESTAMPDIFF).sql('(').visit(p.toName()).sql(", ").visit(date2).sql(", ").visit(date1).sql(')');
+ ctx.visit(N_TIMESTAMPDIFF).sql('(').visit(p.toName()).sql(", ").visit(startDate).sql(", ").visit(endDate).sql(')');
return;
case DERBY:
- ctx.sql("{fn ").visit(N_TIMESTAMPDIFF).sql('(').visit(keyword("sql_tsi_day")).sql(", ").visit(date2).sql(", ").visit(date1).sql(") }");
+ ctx.sql("{fn ").visit(N_TIMESTAMPDIFF).sql('(').visit(keyword("sql_tsi_day")).sql(", ").visit(startDate).sql(", ").visit(endDate).sql(") }");
return;
@@ -160,14 +160,14 @@ final class DateDiff extends AbstractField {
case MICROSECOND:
case NANOSECOND:
if (ctx.family() == HSQLDB) {
- ctx.visit(N_DATEDIFF).sql('(').visit(p.toKeyword()).sql(", ").visit(date2.cast(TIMESTAMP)).sql(", ").visit(date1.cast(TIMESTAMP)).sql(')');
+ ctx.visit(N_DATEDIFF).sql('(').visit(p.toKeyword()).sql(", ").visit(startDate.cast(TIMESTAMP)).sql(", ").visit(endDate.cast(TIMESTAMP)).sql(')');
return;
}
break;
}
- ctx.visit(N_DATEDIFF).sql('(').visit(p.toKeyword()).sql(", ").visit(date2).sql(", ").visit(date1).sql(')');
+ ctx.visit(N_DATEDIFF).sql('(').visit(p.toKeyword()).sql(", ").visit(startDate).sql(", ").visit(endDate).sql(')');
return;
@@ -177,7 +177,7 @@ final class DateDiff extends AbstractField {
case SQLITE:
- ctx.sql('(').visit(N_STRFTIME).sql("('%s', ").visit(date1).sql(") - ").visit(N_STRFTIME).sql("('%s', ").visit(date2).sql(")) / 86400");
+ ctx.sql('(').visit(N_STRFTIME).sql("('%s', ").visit(endDate).sql(") - ").visit(N_STRFTIME).sql("('%s', ").visit(startDate).sql(")) / 86400");
return;
@@ -218,7 +218,7 @@ final class DateDiff extends AbstractField {
// [#4481] Parentheses are important in case this expression is
// placed in the context of other arithmetic
- ctx.sql('(').visit(date1).sql(" - ").visit(date2).sql(')');
+ ctx.sql('(').visit(endDate).sql(" - ").visit(startDate).sql(')');
return;
}
@@ -248,11 +248,11 @@ final class DateDiff extends AbstractField {
}
- ctx.visit(castIfNeeded(date1.minus(date2), Integer.class));
+ ctx.visit(castIfNeeded(endDate.minus(startDate), Integer.class));
}
private final Field partDiff(DatePart p) {
- return DSL.extract(date1, p).minus(DSL.extract(date2, p));
+ return DSL.extract(endDate, p).minus(DSL.extract(startDate, p));
}
/**