1
helllo比较光滑的查询2个日期似乎很难
我无法适应这个代码例子:https://github.com/pedrofurla/slick-demo/blob/master/src/main/scala/slickdemo/domain/Person.scala。
它处理在光滑查询中比较日期的能力。难点是您无法访问日期字段(例如提取年份,月份和日期),因为查询使用了列类型。
我搜索并找到了上面的例子,但我无法适应它。
这里是我的代码:
表:
class Personnes(tag : Tag) extends Table[ Rdv ](tag, "RDV") {
def id = column[ Int ]("ID", O.PrimaryKey, O.AutoInc)
def nom = column[ String ]("NOM", O.NotNull)
def prénom = column[ String ]("PRENOM")
def sexe = column[ Int ]("SEXE")
def télPortable = column[ String ]("TELPOR")
def télBureau = column[ String ]("TELBUR")
def télPrivé = column[ String ]("TELPRI")
def siteRDV = column[ String ]("SITE")
def typeRDV = column[ String ]("TYPE")
def libelléRDV = column[ String ]("LIBELLE")
def numRDV = column[ String ]("NUMRDV")
def étape = column[ String ]("ETAPE")
def dateRDV = column[ java.sql.Date ]("DATE")
def heureRDVString = column[ String ]("HEURE")
def statut = column[ String ]("STATUT")
def orderId = column[ String ]("ORDERID")
def * = (id.?, nom, prénom, sexe, télPortable, télBureau, télPrivé,
siteRDV, typeRDV, libelléRDV, numRDV, étape, dateRDV, heureRDVString,
statut, orderId) <> (Rdv.tupled, Rdv.unapply _)
}
和方法:
def sqlite_findBetween(début : java.util.Date, fin : java.util.Date) : List[ Rdv ]= db_sqlite.withSession { implicit db : Session =>
def débutTime:org.joda.time.DateTime = new DateTime(début)
def finTime=new DateTime(fin)
val query = for {
p <- personnes
if (p.dateRDV > débutTime && finTime < p.dateRDV)
} yield p
query.list
}
的感谢!
PS:我忘了错误:附近的日期比较,我得到:
Cannot perform option-mapped operation with type: (java.sql.Date, org.joda.time.DateTime) => R for base type: (java.sql.Date, java.sql.Date) => Boolean
PS2:这里是实用程序文件:我已经明显增加它在classpath:https://github.com/pedrofurla/slick-demo/blob/master/src/main/scala/slickdemo/dal/JodaTimeSupport.scala,与此:
import models.JodaTimeSupport
package models {
trait sqlite extends JodaTimeSupport {...
太棒了!谢谢 – lolveley
很高兴帮助。祝你的项目好运! – Vidya