0
我实际上想要计算持续时间并按降序对结果进行排序。如何查找从startTime和endTime [通过浮油的DateTime]的持续时间
我都试过了,
db.run(totalSuccess.sortBy(ele => computeDuration(ele.startedOn, ele.completedOn).desc))
private def computeDuration(d1: Option[DateTime], d2: Option[DateTime]) = (d1, d2) match {
case (Some(d1),Some(d2)) => new Period(d1, d2, PeriodType.hours())
case _ => None
}
得到一个类型不匹配错误的ele.startedOn
为Rep[Option[DateTime]
和computeDuration
预计Option[DateTime]
。
可以吗?或者有没有其他简单的方法来做到这一点。
不,这是行不通的。您必须记住Slick生成SQL中的数据库IO操作。尽管API看起来像标准的Scala代码,但除非Slick明确支持,否则不能使用任意类型。在你的情况下,你必须定义一个用于间隔计算的Slick函数,它将映射到一个本地SQL函数。你可能会发布一个完整的代码示例编译? – user3588254