【发布时间】:2017-08-04 23:34:14
【问题描述】:
我正在尝试将 DATEPART 用于一个灵活的查询,以便为我提供一年中每个月的值总和。为此,我正在尝试以下查询:
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: 为 datepart 指定的参数 1 无效。]
我已将 datePart 函数定义为:
protected val datePart = SimpleFunction.binary[String,Date,Int]("DATEPART")
日期属性称为dataEmissao,映射为java.sql.Date
如何正确地将参数传递给 DATEPART ?
更新
我检查了 slick 生成的 SQL 语句,我注意到它尝试将参数传递给 DATEPART:
DATEPART('mm',x2."data_emissao")
应该是这样的:
DATEPART(mm,x2."data_emissao")
我怎样才能通过 mm 而不是 'mm' ?
【问题讨论】:
标签: sql-server scala slick datepart