代码之家  ›  专栏  ›  技术社区  ›  agusgambina

光滑过滤器nscala时间日期时间按大相等或小相等

  •  0
  • agusgambina  · 技术社区  · 6 年前

    我正在尝试过滤 nscala-time DateTime 具有 Slick

    package models.repositories.tables
    
    import java.sql.Timestamp
    import com.github.nscala_time.time.Imports._
    import models.entities.User
    import slick.lifted.ProvenShape
    import slick.jdbc.MySQLProfile.api._
    
    class UserTable (tag: Tag)  extends Table[User](tag, "users") {
      def id = column[Long]("id", O.PrimaryKey, O.AutoInc)
      def name = column[String]("name")
      def createdAt = column[DateTime]("createdAt", O.SqlType("TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"))
      def updatedAt = column[DateTime]("updatedAt", O.SqlType("TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP"))
      override def * : ProvenShape[User] = (
        id,
        name,
        createdAt,
        updatedAt
      ) <> (User.tupled, User.unapply)
    }
    
    object UserTable extends GenericTableQuery[User, UserTable] {
      val userQuery = tableQuery
    
      implicit def dateTimeMapping: BaseColumnType[DateTime] = MappedColumnType.base[DateTime, Timestamp](
        dateTime => new Timestamp(dateTime.getMillis),
        timeStamp => new DateTime(timeStamp.getTime)
      )
    
    }
    

    但是当我尝试用

    def getUsers(from: DateTime, end: DateTime, offset: Int) = {
      val usersQuery = UserTable.userQuery.filter(p => p.createdAt >= from && p.createdAt <= end).sortBy(_.createdAt.desc)
      users.drop(offset).take(25)
    }
    

    我明白了 >= <= 无法解决

    1 回复  |  直到 6 年前
        1
  •  0
  •   agusgambina    6 年前

    我只需要显式地导入 implicit def dateTimeMapping 我需要在哪里使用它

    import models.repositories.tables.UserTable.dateTimeMapping