Magnolia JCR-SQL2 按日期排序

Posted

技术标签:

【中文标题】Magnolia JCR-SQL2 按日期排序【英文标题】:Magnolia JCR-SQL2 order by Date 【发布时间】:2016-06-10 11:57:41 【问题描述】:

在 JCR 中,我注意到日期以 Feb 19, 2015 12:00:00 AM 格式存储。这意味着当您尝试按日期排序查询时,它似乎不起作用:

SELECT * FROM [mgnl:pages] ORDER BY articlePublishedDate

将返回:

Apr 1, 2015 12:00:00 AM Dec 1, 2015 12:00:00 AM Feb 1, 2015 12:00:00 AM

有没有办法让ORDER BY 子句充当整数?我试过CAST(articlePublishedDate AS LONG),但似乎我的内容存储库不喜欢它...

【问题讨论】:

【参考方案1】:

这是 JCR 比 Magnolia 更多的问题,但是,可以执行以下操作来解决此问题。

SELECT p.* FROM [mgnl:page] AS p
WHERE p.[mgnl:lastModified] > CAST('2016-06-10T07:24:50.233Z' AS DATE)

我认为 order by 也应该以同样的方式工作。

干杯

【讨论】:

【参考方案2】:

确保articlePublishedDate 节点属性的类型为Date,而不是String。例如,以下 JCR2 查询在 website 存储库上执行时以正确的顺序返回结果:

select p.* from [mgnl:page] as p order by p.[jcr:created] desc

【讨论】:

【参考方案3】:

最终在代码中排序,因为我的 JCR 实现不支持它。

【讨论】:

以上是关于Magnolia JCR-SQL2 按日期排序的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia 5.4.7 更改列排序

在 Java 的 JCR-SQL2 中使用 IN 子句

SQL多表联合查询按日期排序

MySQL按4个字段日期和时间排序

如何按日期排序数组并计算离子2

mysql 按日期排序并排序父表