我正在尝试查询 SQL Server 中某个时间范围内但丢弃年份的事件,因为我正在寻找年度事件。我正在尝试通过将月份和月份天数与其整数等价物进行比较来构建查询,但似乎没有办法。
对于 的列类型Column<DateTime>
,您可以与lessEq
/进行比较greaterEq
。但是,如果我只是想比较月份,则 usingcolumnDate.month()
返回一个Expression
and 不是 type 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 an这样的表达式Op<Boolean>
。有没有办法做到这一点?