2016-11-03 14 views
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.startedOnRep[Option[DateTime]で、computeDurationOption[DateTime]を期待型の不一致エラーを取得、試してみました。

正常に機能しますか?またはこれを行う他の簡単な方法があります。

+0

のための適切なデータベース機能とdatediffを交換してください。あなたはSlickのSQLでDB IOアクションを覚えておく必要があります。 APIは標準的なスカラコードのように見えますが、Slickによって明示的にサポートされていない限り、任意の型を使用することはできません。あなたの場合、ネイティブSQL関数にマップする区間計算のためにSlick関数を定義する必要があります。あなたはたぶんコンパイルする完全なコードサンプルを投稿できますか? – user3588254

答えて

0

データベース機能を使用してデータベースレベルで実行します。

def diff(d1: Rep[DateTime], d2: Rep[DateTime]): Rep[Long] = { 
    SimpleFunction.binary[DateTime, DateTime, Long]("datediff").apply(d1, d2) 
} 

、これは動作しませんノーデータベースソリューション

関連する問題