Scala Slick Lifted Date GroupBy

时间:2013-02-21 14:10:37

标签: database scala slick

我正在使用Scala 2.10和Slick 1.0.0并尝试进行提升查询。

我有一个表,“登录”,我正在尝试加载,而groupBy在Timestamp列上。但是,当我尝试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

有没有人对Timestamps从数据库中正确分组有任何建议?

1 个答案:

答案 0 :(得分:0)

TimestampDate不是一回事!尝试使用TimestampcalendarSimpleDateTime转换为人类可理解的文字。

虽然不太确定第二个!