0

我需要比较两个日期。一个是页面的属性,第二个是当前日期。问题是,它们的格式不同,因此 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


日期格式:

有效日期- 2014 年 1 月 10 日14:47:08

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

4

1 回答 1

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 日期转换为正确的格式。

尝试这个:

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

于 2014-11-07T01:53:43.083 回答