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