XWiki - 在查询中格式化日期

时间:2014-11-06 10:38:34

标签: sql date hql xwiki

我需要比较两个日期。一个是页面的属性,第二个是当前日期。问题是,它们的格式不同,因此XWQL无法比较它们(我认为这是因为第一次约会)。但是,我不知道如何更改查询模块可接受的第一个日期的格式。

我看不出如何使用 $ datetool ,因为我需要在执行查询期间重新格式化日期,而不是在它之前(我没有属性的内容)

我很想找到像MySQL date_format()这样的函数。我现在使用XWQL,但查询也可以用HQL编写。

那么,你知道有什么办法吗?

实施例

FROM doc.object('$xcontext.macro.params.parentSpaceClass')
AS page 
WHERE :validDate >= $currDate
ORDER BY $ordCol $xcontext.macro.params.orderDirection

validDate - 属性的名称,而不是其值(例如 page.enddate


日期格式:

validDate - 01/10/2014 14:47:08

$ currDate - 2014年11月6日12:27:50 EET 2014

1 个答案:

答案 0 :(得分:0)

  1. 您无法使用查询参数填写查询的实际主题。它只会使用文字字符串'page.enddate'作为比较值,无论您使用什么值和格式$currDate,它都不会执行正确的比较。
  2. 您也应该将$currDate作为参数传递,不要只是将其附加到查询中。
  3. 您最终得到的实际查询是: FROM doc.object('Some.Class') AS page WHERE 'page.endddate' >= Thu Nov 06 12:27:50 EET 2014 ORDER BY ... 该文字日期未被引用,因此它将触发语法异常。即使引用,日期在SQL中也有自己的语法。幸运的是,如果您将日期作为参数传递,XWiki查询模块将知道如何将Java日期转换为正确的格式。
  4. 试试这个:

      

    $ services.query.xwql(" FROM doc.object(' $ xcontext.macro.params.parentSpaceClass')   AS页面WHERE $ validDateProperty> =:date ORDER BY $ ordCol $ xcontext.macro.params.orderDirection")。bindValue(' date',$ currDate).execute()   ```