1

Slick 1.0.0 で Scala 2.10 を使用しており、持ち上げられたクエリを実行しようとしています。

ロードを実行しようとしているテーブル「Logins」と、Timestamp 列の groupBy があります。ただし、groupBy を試行すると、Timestamp フィールドをフォーマットして日の部分のみを抽出し、同じ日でオブジェクトをグループ化しようとすると、問題が発生します。

オブジェクトが与えられた場合:

id | requestTimestamp
1  | Jan 1, 2013 01:02:003
2  | Jan 1, 2013 03:04:005
3  | Jan 1, 2013 05:06:007
4  | Jan 2, 2013 01:01:001

同様の日付でデータベースからグループ化を返したいと思います。ここで、簡潔にするために、次のフォーマットされたタイムスタンプと ID の関係が発生します。ID は実際にはオブジェクトのリストになります

Jan 1, 2013 -> (1, 2, 3)
Jan 2, 2013  (4)

次の滑らかなテーブル オブジェクトがあります。

private implicit object Logins extends Table[(Int, Timestamp)]("LOGINS") {
    def id = column[Int]("ID", O.PrimaryKey)
    def requestTimeStamp = column[Timestamp]("REQUESTTIMESTAMP", O.NotNull)
    def * = logId ~ requestTimeStamp
}

次のクエリ メソッド:

val q = for {
    l <- Logins if (l.id >= 1 && l.id <= 4)
} yield l

val dayGroupBy = new java.text.SimpleDateFormat("MM/dd/yyyy")
val q1 = q.groupBy(l => dayGroupBy.format(l.requestTimeStamp))

db.withSession {
    q1.list
}

ただし、予想されるグループ化を取得する代わりに、groupBy を試行した行で例外が発生します。

java.lang.IllegalArgumentException: Cannot format given Object as a Date

データベースからタイムスタンプで適切にグループ化することについて、誰か提案はありますか?

4

1 に答える 1

0

TimestampDate同じではありません!またはTimestampを使用して、人間が理解できるテキストに変換してみてください。calendarSimpleDateTime

しかし、2番目のものについてはよくわかりません!

于 2013-02-21T14:24:08.983 に答える