我正在使用带有 Slick 1.0.0 的 Scala 2.10 并尝试进行提升查询。
我有一个表“登录”,我试图在其中进行加载,并在时间戳列上进行分组。但是,当我尝试分组时,当我尝试格式化时间戳字段以仅提取日期部分以按同一天对对象进行分组时,我遇到了问题。
给定对象:
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
有人对按数据库中的时间戳正确分组有任何建议吗?