0
我正在尝试将DATEPART用于光滑的查询,以给我一年中每个月的值的总和。这样做,我想下面的查询:使用DATEPART进入Slick查询
val empenhado = tableReference.filter(_.cancelled.isEmpty)
.filter(_.unidadeGestora like unidadeGestora)
.filter(_.confirmado)
.filter(_.anoEmissao === now.get(Calendar.YEAR))
.filterNot(_.id in queryEstornado)
.groupBy(r => datePart("mm",r.dataEmissao))
.map(r => (r._1, r._2.map(r2 => r2.valorEmpenhado).sum))
empenhado.run
当我尝试运行它,我得到的错误:
[SQLException: Invalid parameter 1 specified for datepart.]
我已经定义了日期部分功能:
protected val datePart = SimpleFunction.binary[String,Date,Int]("DATEPART")
和日期属性称为dataEmissao,它被映射为java.sql.Date
如何正确地将参数传递给DATEPART?
UPDATE
我检查由光滑生成的SQL语句,我注意到,它试图将参数传递给DATEPART为:
DATEPART('mm',x2."data_emissao")
,而应该是:
DATEPART(mm,x2."data_emissao")
我怎样才能通过mm而不是'mm'?
嗨!如果它是纯SQL,它会是这样的。我正在使用映射到SQL函数的scala函数。如果我尝试使用mm而不是“mm”,则代码不会编译,因为mm未定义。 – RafaelTSCS
你的区域是正确的,但是我怎么能通过没有''? – RafaelTSCS