Ich verwende scala
, play
, sclick
; und postgres
. Ich habe eine Tabelle mit dem Namen order
& gemacht, die ein Feld mit dem Namen created
im Zeitstempelformat mit Zone enthält. Nun möchte Ich mag auf order
basierend auf created
mit Parametern suchen year
& month
wie folgt: -Wie filtere ich das Datum in Play-SLICK, das als Instant gespeichert wird?
SELECT * FROM "order"
WHERE created::text LIKE '2016-07%';
Die obige Abfrage funktioniert in Postgres in Ordnung.
Das scala Code, den ich für Order
geschrieben ist: -
case class Order(id: Option[Int],
customerId: Int,
amount: Double,
created: Option[Instant],
updated: Option[Instant]) extends GenericEntity {
def this(customerId: Int,
amount: Double,) = this(None, customerId, amount, None, None)
}
class OrderTable(tag: Tag) extends GenericTable[Order](tag, "order") {
override def id = column[Option[Int]]("id", O.PrimaryKey, O.AutoInc)
def customerId = column[Int]("customer_id")
def amount = column[Dount]("amount")
def customer = foreignKey("fk_order_customer", customerId, Customers.table)(_.id.getOrElse(1), onUpdate = ForeignKeyAction.Restrict, onDelete = ForeignKeyAction.Cascade)
def * = (id, customerId, amount, created, updated) <> ((Order.apply _).tupled, Order.unapply)
}
object Orders extends GenericService[Order, OrderTable] {
override val table = TableQuery[OrderTable]
override def copyEntityFields(entity: Order, id: Option[Int], created: Option[Instant], updated: Option[Instant]): Order = {
entity.copy(id = id, created = created, updated = updated)
}
def getMonthlyOrder(year:Int, month: Int) = {
// execute LIKE query for the following query
// SELECT * FROM "order"
// WHERE created::text LIKE '2016-07%';
}
}
Wo GenericEntity
definiert id
, created
, updated
.
Also, welchen Code sollte ich für getMonthlyOrder
Funktion schreiben, mit year
und month
?.
Haben Sie versucht, https://github.com/tminglei/ glatt-pg? – OlivierBlanvillain