2011-04-27 7 views
2

날짜 기능 사용. 10 일 밖에되지 않은 게시물을 나열하고 싶습니다. 표시하지 않습니다.makumba의 날짜 기능이있는 조작

DAYOFYEAR (현재 $) -dayOfYear (p.TS_create) < 10 년 (현재 $) = 올해 (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)">

나는이 쿼리를

작동하지만 더 좋은 방법이 있는지 묻고 싶습니다.

+0

2011 년 12 월 25 일과 같은 값의 경우 2012 년 1 월 1 일에 실패합니다! 랩 어라운드 시나리오도 처리하십시오 ... – nemesisfixx

답변

1

음 아마도 이것이 최선의 방법은 아닙니다.

우선 year($now)=year(p.TS_create) 첫 번째 1 월 1 일에 지난 9 일간의 게시물을 볼 수 없게됩니다 (이전에 보려는 것이 좋습니다).

그렇지 않으면, dayOfYear() 아마 일 것이다, 그러나 1 년에 하루를 나타 내기 때문에 (가능한 분 날짜 이후의 일하지 총 수) 더 나은 옵션은 같은 것을 사용하는 것입니다 :

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

을 추신 또한 $now을 사용하는 경우 컨텍스트 속성으로 설정해야하지만 MQL에서는 now()을 대신 사용할 수 있습니다. 따라서 c:if 문과 같이 페이지의 다른 곳에서 $now을 사용하지 않는 경우이 기능을 사용하는 것이 좋습니다.

0

또 다른 옵션은 다음과 같이 밀리 초 단위로 날짜의 숫자 표현을 사용하는 것입니다

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

(10 * 24 * 60 * * 1000 (60)는 10 일 동일)

마음이 millisecond 또는 dateAdd (p.TS_create, 10, 'day')> now()를 사용하는 두 솔루션 모두 실제로 240 시간을 비교하고 달력 일을 무시합니다.

관련 문제