/** * Create an expression representing the current date as a {@code DateExpression} instance * * @param cl type of expression * @return current date */ public static <T extends Comparable> DateExpression<T> currentDate(Class<T> cl) { return Expressions.dateOperation(cl, Ops.DateTimeOps.CURRENT_DATE); }
@Override protected DateExpression<T> createResult(Class<T> type, Expression<T> last) { return Expressions.dateOperation(type, Ops.CASE_EQ, base, last); }
@Override protected DateExpression<T> createResult(Class<? extends T> type, Expression<T> last) { return Expressions.dateOperation(type, Ops.CASE, last); }
/** * Get the minimum value of this expression (aggregation) * * @return min(this) */ public DateExpression<T> min() { if (min == null) { min = Expressions.dateOperation(getType(), Ops.AggOps.MIN_AGG, mixin); } return min; }
/** * Get the maximum value of this expression (aggregation) * * @return max(this) */ public DateExpression<T> max() { if (max == null) { max = Expressions.dateOperation(getType(), Ops.AggOps.MAX_AGG, mixin); } return max; }
@Override public DateExpression<T> as(Path<T> alias) { return Expressions.dateOperation(getType(), Ops.ALIAS, mixin, alias); }
public DateExpression<T> asDate() { return Expressions.dateOperation(getType(), Ops.COALESCE, getExpressionList()); }
@Test public void dateOperation() { assertEquals("current_date()", Expressions.dateOperation(Date.class, Ops.DateTimeOps.CURRENT_DATE).toString()); }
/** * Create an expression representing the current date as a {@code DateExpression} instance * * @param cl type of expression * @return current date */ public static <T extends Comparable> DateExpression<T> currentDate(Class<T> cl) { return Expressions.dateOperation(cl, Ops.DateTimeOps.CURRENT_DATE); }
/** * Convert timestamp to date * * @param type type * @param dateTime timestamp * @return date */ public static <D extends Comparable> DateExpression<D> date(Class<D> type, DateTimeExpression<?> dateTime) { return Expressions.dateOperation(type, Ops.DateTimeOps.DATE, dateTime); }
@Override protected DateExpression<T> createResult(Class<T> type, Expression<T> last) { return Expressions.dateOperation(type, Ops.CASE_EQ, base, last); }
/** * Convert timestamp to date * * @param dateTime timestamp * @return date */ public static <D extends Comparable> DateExpression<D> date(DateTimeExpression<D> dateTime) { return Expressions.dateOperation(dateTime.getType(), Ops.DateTimeOps.DATE, dateTime); }
/** * Truncate the given date expression * * @param unit date part to truncate to * @param expr truncated date */ public static <D extends Comparable> DateExpression<D> datetrunc(DatePart unit, DateExpression<D> expr) { return Expressions.dateOperation(expr.getType(), DATE_TRUNC_OPS.get(unit), expr); }
/** * Get the maximum value of this expression (aggregation) * * @return max(this) */ public DateExpression<T> max() { if (max == null) { max = Expressions.dateOperation(getType(), Ops.AggOps.MAX_AGG, mixin); } return max; }
/** * Get the minimum value of this expression (aggregation) * * @return min(this) */ public DateExpression<T> min() { if (min == null) { min = Expressions.dateOperation(getType(), Ops.AggOps.MIN_AGG, mixin); } return min; }
/** * Create a dateadd(unit, date, amount) expression * * @param unit date part * @param date date * @param amount amount * @return converted date */ public static <D extends Comparable> DateExpression<D> dateadd(DatePart unit, DateExpression<D> date, int amount) { return Expressions.dateOperation(date.getType(), DATE_ADD_OPS.get(unit), date, ConstantImpl.create(amount)); }
/** * Add the given amount of days to the date * * @param date date * @param days days to add * @return converted date */ public static <D extends Comparable> DateExpression<D> addDays(DateExpression<D> date, int days) { return Expressions.dateOperation(date.getType(), Ops.DateTimeOps.ADD_DAYS, date, ConstantImpl.create(days)); }
/** * Add the given amount of weeks to the date * * @param date date * @param weeks weeks to add * @return converted date */ public static <D extends Comparable> DateExpression<D> addWeeks(DateExpression<D> date, int weeks) { return Expressions.dateOperation(date.getType(), Ops.DateTimeOps.ADD_WEEKS, date, ConstantImpl.create(weeks)); }
/** * Add the given amount of years to the date * * @param date date * @param years years to add * @return converted date */ public static <D extends Comparable> DateExpression<D> addYears(DateExpression<D> date, int years) { return Expressions.dateOperation(date.getType(), Ops.DateTimeOps.ADD_YEARS, date, ConstantImpl.create(years)); }
/** * Add the given amount of months to the date * * @param date date * @param months months to add * @return converted date */ public static <D extends Comparable> DateExpression<D> addMonths(DateExpression<D> date, int months) { return Expressions.dateOperation(date.getType(), Ops.DateTimeOps.ADD_MONTHS, date, ConstantImpl.create(months)); }