I believe most people use JodaTime, so that might explain why it is missing. If it is not part of Anorm, you can write your own converter.
This is not verified, but it looks something like
import java.time.Instant
import java.time.format.DateTimeFormatter
import java.util.TimeZone
import anorm._
object InstantAnormExtension {
val dateFormatGeneration = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss-Z")
implicit def rowToDateTime: Column[Instant] = Column.nonNull { (value, meta) =>
val MetaDataItem(qualified, nullable, clazz) = meta
value match {
case ts: java.sql.Timestamp => Right(ts.toInstant)
case d: java.sql.Date => Right(d.toInstant)
case str: java.lang.String => Right(Instant.from(dateFormatGeneration.parse(str)))
case _ => Left(TypeDoesNotMatch("Cannot convert " + value + ":" + value.asInstanceOf[AnyRef].getClass) )
}
}
implicit val dateTimeToStatement = new ToStatement[Instant] {
def set(s: java.sql.PreparedStatement, index: Int, aValue: Instant): Unit = {
if(aValue == null) {
s.setTimestamp(index, null)
} else {
s.setTimestamp(index, java.sql.Timestamp.from(aValue) )
}
}
}
}
source
share