Hi all,
I’m using SQLContainer in vaadin app 6.8.1, and I’d like implement filter for field type date like that (SQL):
DECLARE
@d1 datetime,
@d2 datetime,
@d3 int
SET @d1 = '2012-08-01';
SET @d2 = '2012-08-31';
SET @d3 = (year(@d1)*100+(MONTH(@d1)))
SELECT * FROM table t0
WHERE ( -- part 1
(
(t0.periodDateFrom <= @d1)
AND (t0.periodDateTo >= @d1)
)
OR
(
(t0.periodDateFrom <= @d2)
AND (t0.periodDateTo >= @d2)
)
) OR -- part 2
(
(
((YEAR(t0.periodDateFrom)*100)+(MONTH(t0.periodDateFrom))) = @d3
) AND
(
((YEAR(t0.periodDateTo)*100)+(MONTH(t0.periodDateTo))) = @d3
)
)
In part 2 I need detect that date like that: periodDateFrom = ‘2012-08-04’, periodDateTo = ‘2012-08-25’
I did in app code like that:
Date d1 = Utils.cleanDateSetFirstDayOfMonth((Date) idfDatePeriodMonth.getValue());
Date d2 = Utils.cleanDateSetLastDayOfMonth((Date) idfDatePeriodMonth.getValue());
Filter filter1 = new Compare.LessOrEqual("periodDateFrom", new Timestamp(d1.getTime()));
Filter filter2 = new Compare.GreaterOrEqual("periodDateTo", new Timestamp(d1.getTime()), 2);
Filter filter3 = new Compare.LessOrEqual("periodDateFrom", new Timestamp(d2.getTime()));
Filter filter4 = new Compare.GreaterOrEqual("periodDateTo", new Timestamp(d2.getTime()), 2);
And and1 = new And(filter1, filter2);
And and2 = new And(filter3, filter4);
Or or = new Or(and1, and2);
containerTable.addContainerFilter(or);
And filtering on part 1 works OK. But I don’t have idea how can I implement second part filter. Is it possible implement this filter? I found old msg that actually it’s not possible:
https://vaadin.com/forum/-/message_boards/view_message/253684#_19_message_253684
Is this message is actually for version vaadin 6.8.1?
Any ideas?
Best regards,
Paul