使用 Kotlin Exposed 删除具有复杂过滤器的查询

Delete query with complex filter using Kotlin Exposed

我正在创建一个删除查询,我需要在其中调用本机 Postgres 函数来过滤应删除的记录。

总之,查询如下:删除所有 start_at 列(时间戳)早于 5 天的记录(查询的动态参数) .

对于本机 SQL,查询如下:

delete from my_table t where date_part ('day', (current_date - t.start_at))> = 5

在我的 Kotlin 编码中,我无法实现这个查询。公开文档中的示例没有包含更复杂过滤器的代码。我知道它是这样的:

(1)

transaction {
   MyTable.deleteWhere {
     MyTable.startAt greaterEq ??????
   }
}

(2)

transaction {
   exec ("delete query here> = $ {daysToFilter}")
}

有没有办法在示例 (1) 之后的代码中执行此查询? 如果没有,执行此查询的最佳方法是什么?

示例数据集:

id start_at
1 2020-09-01 09:00:00
2 2020-09-02 09:00:00
3 2020-09-03 09:00:00
4 2020-09-04 09:00:00

最终解决方案如下:

fun my_function(days: Int) {
    val startAt = DateTime.now()
                .withTimeAtStartOfDay()
                .minusDays(days)

    transaction {
        MyTable.deleteWhere {
            MyTable.startAt greaterEq startAt         
        }     
    } 
}