Я использую это поле в GROUP BY для получения ежемесячных отчетов:
trunc(date(SOME_TIMESTAMP), DatePart.MONTH).as("month")
Также работает одинаково для ежедневных или ежегодных отчетов.
Но как я могу делать еженедельные отчеты? Нет DatePart.WEEK
.
Начиная с jOOQ 3.3 поддерживаются только стандартные "даты" для SQL. Существует проблема с ожидающим отладочной функцией # 2132 для добавления других деталей, относящихся к конкретным поставщикам. Тем временем вам, вероятно, придется прибегнуть к простой реализации SQL.
Некоторые указатели здесь:
вы можете попробовать простой SQL, например:
public static Field<Integer> yearWeek(Field<Timestamp> field, int mode) {
return DSL.field("yearweek({0}, {1})", SQLDataType.INTEGER,
field, DSL.inline(mode));
}
используйте его следующим образом: groupBy(yearWeek(SOME_TIMESTAMP_FIELD, 1))
.
режим записывается в mysql yearweek.