在makumba中使用日期函数进行操作

时间:2011-04-27 21:41:19

标签: makumba

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

dayOfYear($ now)-dayOfYear(p.TS_create)< 10 and 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)">

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

2 个答案:

答案 0 :(得分:1)

这可能不是最好的选择。

首先year($now)=year(p.TS_create)将导致1月1日你不会看到前几年最后9天的帖子(我想你也想看到这些帖子)。

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

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

P.S。另外请记住,如果使用$now,则必须将其设置为上下文属性,但是在MQL中,您可以使用函数now()来代替它。因此,如果您未在页面中的其他位置使用$now(例如在c:if语句中),则最好使用该功能。

答案 1 :(得分: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')&gt; now())实际上会比较240小时,并忽略日历天。