You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin Exposed查询可空datetime字段时如何匹配null值?

实现代码

你只需要在includeCurrent的条件分支中,用Exposed提供的or逻辑运算符,将日期大于当前时间的条件和myDate为空的条件组合即可,推荐直接用内置的isNull()方法简化空值判断,修改后的查询逻辑如下:

val query = MyTable.select {
    val now = DateTime.now() // 抽离公共变量避免多次计算生成不一致的时间值
    when {
        includeCurrent && includeEnded -> Op.TRUE
        includeCurrent -> (MyTable.myDate.greater(now)) or (MyTable.myDate.isNull())
        includeEnded -> MyTable.myDate.less(now)
        else -> Op.FALSE
    }
}

补充说明

  • 用括号包裹两个条件是为了避免运算符优先级导致的逻辑错误,保证两个条件是平级的或关系
  • 如果你坚持要用eq方法匹配空值,也可以替换为MyTable.myDate.eq<DateTime?>(null),效果和isNull()完全一致
  • 如果后续需要在其他分支也包含空值条目,用同样的or拼接空判断条件即可

内容的提问来源于stack exchange,提问作者JohnDoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:54:00