Я пытаюсь запросить события в SQL Server, которые находятся в пределах периода времени, но отбрасывают год, потому что я ищу ежегодные события. Я пытаюсь построить запрос, сравнивая месяцы и дни месяца с их целочисленными эквивалентами, но, похоже, не существует способа.
С типами столбцов Column<DateTime>
вы можете сравнить сlessEq
/ greaterEq
. Однако, если я просто хочу сравнить месяцы, использование columnDate.month()
возвращает Expression
и не относится к типу Column
, и lessEq
/ greaterEq
эквивалентов не существует.
Другая проблема заключается в том, что даже нет функции расширения monthDay
. К счастью, это проще в управлении, так как это будет то же самое, что и функция месяца с небольшим изменением:
fun <T: DateTime?> Expression<T>.monthDay() = DayOfMonth(this)
class DayOfMonth<T:DateTime?>(val expr: Expression<T>): Function<Int>(IntegerColumnType()) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder { append("DAY(", expr,")") }
}
Цель для меня слишком в конечном итоге получить выражение типа TableName.dateColumnName.betweenIgnoreYear(startDate, endDate)
return Op<Boolean>
. Есть ли способ сделать это?