【问题标题】:Scala Slick Lifted Date GroupByScala Slick 提升日期 GroupBy
【发布时间】:2023-03-28 19:06:01
【问题描述】:

我正在使用带有 Slick 1.0.0 的 Scala 2.10 并尝试执行提升查询。

我有一个表“登录”,我试图在其中进行加载,并在时间戳列上使用 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

有人对按数据库中的时间戳正确分组有什么建议吗?

【问题讨论】:

    标签: database scala slick


    【解决方案1】:

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

    第二个不太确定!

    【讨论】:

      猜你喜欢
      • 2016-07-30
      • 2013-12-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 2016-03-25
      • 2020-10-08
      相关资源
      最近更新 更多