2

尝试日期功能。想要列出只有 10 天前的帖子,比这更早,我不会显示。我有这个查询:

dayOfYear($now)-dayOfYear(p.TS_create)<10 和 year($now)=year(p.TS_create)

代替:

<mak:list from="general.forum.Post p" where="dayOfYear($now)-dayOfYear(p.TS_create)<10 and year($now)=year(p.TS_create)">

它有效,但只是想问是否有更好的方法来做到这一点。

4

2 回答 2

1

好吧,这可能不是最好的选择。

首先year($now)=year(p.TS_create)将导致在 1 月 1 日,您将看不到前几年最后 9 天的帖子(我想您也希望看到)。

否则,这dayOfYear()可能会起作用,但由于它代表一年中的一天(而不是自可能的最小日期以来的总天数),更好的选择是使用类似的东西:

dateAdd(p.TS_create, 10, 'day') > now()

PS 还要记住,如果你使用$now你必须将它设置为上下文属性,但是在 MQL 中你有一个now()可以使用的函数。所以如果你没有$now在页面的其他地方使用(比如在c:if语句中),最好使用这个函数。

于 2011-04-27T22:08:32.527 回答
0

另一种选择是以毫秒为单位使用日期的数字表示,如下所示:

unix_timestamp(now()) - unix_timestamp(p.TS_create) < 10 * 24 * 60 * 60 * 1000

(10 * 24 * 60 * 60 * 1000 等于 10 天)

请注意,这两种解决方案(使用毫秒或 dateAdd(p.TS_create, 10, 'day') > now())实际上都会比较 240 小时,而忽略日历日。

于 2011-04-28T08:39:10.223 回答