У меня есть то, что кажется простой проблемой, и желаю, чтобы было простое решение. Но я еще не нашел его.Хранение даты и времени в MySQL с использованием Slick/Scala
Мои атрибуты в MySQL имеют типы DATE и TIMESTAMP. Это мои скользкие классы:
case class Event (
id: Long, name: String, category: String, date: Date, venue: String, startTime: Date, endTime: Date, description: String, admission: String, addInfo: Option[String])
class Events(tag: Tag) extends Table[Event](tag, "EVENT") {
implicit val dateColumnType = MappedColumnType.base[Date, Long](d => d.getTime, d => new Date(d))
def id = column[Long]("ID", O.PrimaryKey)
def name = column[String]("NAME")
def category = column[String]("CATEGORY")
def date = column[Date]("DATE")
def venue = column[String]("VENUE")
def startTime = column[Timestamp]("START_TIME")
def endTime = column[Timestamp]("END_TIME")
def description = column[String]("DESCRIPTION")
def admission = column[String]("ADMISSION")
def addInfo = column[String]("ADD_INFO")
def * = (id, name, category, date, venue, startTime, endTime, description, admission, addInfo.?) <> (Event.tupled, Event.unapply _)
}
По некоторым причинам, я не могу получить эту работу. Основная проблема заключается в том, как хранить java.util.Date в типах DATE и TIMESTAMP в MySQL.
Может ли кто-нибудь посоветовать, как лучше всего это сделать? Я довольно новичок в мире Scala/Slick.
Спасибо, Sky, работал в первую очередь! Может ли это преобразование быть неявным? –
@Raaj no, потому что есть два преобразования, которые имеют один и тот же параметр входного типа (java.util.Date), поэтому компиляция не понимает, какой из них использует java.util.Date => java.sql.Date или java.util.Date = > java.sql.Timestamp. – Sky
@Raaj Я хотел бы предложить в базе данных всегда сохранять временную метку вместо даты. Если вы сохраняете дату, значит, вы просто потеряли час и минуту, секунду. – Sky