【问题标题】:XWiki - format date inside the queryXWiki - 在查询中格式化日期
【发布时间】:2015-01-02 19:59:10
【问题描述】:

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


日期格式:

有效日期 - 01/10/2014 14:47:08

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

【问题讨论】:

    标签: sql date hql xwiki


    【解决方案1】:
    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') 作为页面 WHERE $validDateProperty >= :date ORDER BY $ordCol $xcontext.macro.params.orderDirection").bindValue('date', $currDate).execute() ```

    【讨论】:

    • 如果我理解得很好,在这个解决方案中我必须在查询执行之前收到$validDateProperty,所​​以我必须提前进行另一个查询?
    • 但是您之前是如何使用它的呢? $validDateProperty 应该是您用来传递给 :validDate 的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    相关资源
    最近更新 更多