Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用slick比较java.sql.Timestamp和LocalDate?_Scala_Slick_Slick 3.0 - Fatal编程技术网

Scala 使用slick比较java.sql.Timestamp和LocalDate?

Scala 使用slick比较java.sql.Timestamp和LocalDate?,scala,slick,slick-3.0,Scala,Slick,Slick 3.0,我有一个光滑的列,它是一个Rep[选项[时间戳]]。我想通过filter方法将其与用户提供的java.util.LocalDate进行比较。我只想比较日期(ddMMyyyy),而不是时间: val userSuppliedLocalDate: LocalDate = ... usersTable.filter(_.modifiedDate === userSuppliedLocalDate).result // Doesn't compile 我考虑过将Rep[Timestamp](uu.mo

我有一个光滑的列,它是一个Rep[选项[时间戳]]。我想通过filter方法将其与用户提供的java.util.LocalDate进行比较。我只想比较日期(ddMMyyyy),而不是时间:

val userSuppliedLocalDate: LocalDate = ...
usersTable.filter(_.modifiedDate === userSuppliedLocalDate).result // Doesn't compile
我考虑过将Rep[Timestamp](uu.modifiedDate)转换为LocalDate,但不确定这是否可行(展开Rep类型?)

或者,将userSuppliedLocalDate转换为java.sql.Timestamp并忽略时间部分进行比较-这可能吗?

不推荐使用这种方法 您可以将
LocalDate
转换为时间戳并比较时间戳

val timestamp = Timestamp.valueOf(localDate.atStartOfDay)
你的方法变成

val userSuppliedLocalDate: LocalDate = ...
val userSuppliedTimestamp = Timestamp.valueOf(localDate.atStartOfDay)
usersTable.filter(_.modifiedDate === userSuppliedTimestamp).result
但是,这不是推荐的方法

如果您想比较特定日期的时间戳。一个黑客就是

val start = Timestamp.valueOf(localDate.atStartOfDay())
val end = Timestamp.valueOf(start.plusDays(1))

usersTable.filter(row => row.modifiedDate >= start && row.modifiedDate < end).result
在范围中包含以下隐含内容

implicit val mapper = MappedColumnType.base[LocalDate, Timestamp](
 _.toLocalDateTime().toLocalDate(),
 Timestamp.valueOf)
现在您可以直接拥有一个
LocalDate

def birthday = column[LocalDate]("birthday")
现在你可以直接比较

def birthdaysBefore(localDate: LocalDate) = 
  query.filter(_.birthday < localDate).result
def birthdaysBefore(localDate:localDate)=
query.filter(u.birth

您也可以使用其他比较运算符。

对于“不推荐的方式”,我想忽略时间,这可能吗?(我只想比较一下日期)谢谢,那么uu.modifiedDate呢?我们是否也需要将其更改为AtStarToDay(否则时间可能会不同?)。虽然我不确定是否可以通过过滤器修改它function@Rory补充了更多的答案。请查收
def birthday = column[LocalDate]("birthday")
def birthdaysBefore(localDate: LocalDate) = 
  query.filter(_.birthday < localDate).result