将DATEPART用于Slick查询

时间:2017-03-14 14:51:33

标签: sql-server scala slick datepart

我正在尝试将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")

date属性名为dataEmissao,它被映射为 java.sql.Date

如何正确地将参数传递给DATEPART?

更新

我检查了光滑生成的SQL语句,我注意到它试图将参数传递给DATEPART:

  

DATEPART( '毫米',X2 “data_emissao”)

虽然它应该是:

  

DATEPART(毫米,X2。 “data_emissao”)

如何通过 mm 而不是'mm'

1 个答案:

答案 0 :(得分:0)

datePart("mm"

应该是

datePart(mm