Reputation: 35
I need something like this for a time interval:
SELECT ( resDueDateBegin >= @Today) & (resDueDateEnd <@Adjust(@Today;0;1;0;0;0;0))
where resDueDateBegin
and resDueDateEnd
are a NotesDateTime
object (item or Field).
Upvotes: 1
Views: 211
Reputation: 35
here is my extension: (now with right TIME too)
try {
var cal = java.util.Calendar.getInstance();
cal.add(java.util.Calendar.DATE, 1)
cal.set(java.util.Calendar.HOUR, 0);
cal.set(java.util.Calendar.MINUTE, 0);
cal.set(java.util.Calendar.SECOND, 0);
cal.set(java.util.Calendar.HOUR_OF_DAY, 0);
var endDate = cal.getTime();
cal.set(1970, 0, 1,0,0,0);
var startDate = cal.getTime();
var vDateRange = session.createDateRange(startDate, endDate);
var cal2 = java.util.Calendar.getInstance();
cal2.add(java.util.Calendar.DAY_OF_MONTH, 0)
cal2.set(java.util.Calendar.HOUR, 0);
cal2.set(java.util.Calendar.MINUTE, 0);
cal2.set(java.util.Calendar.SECOND, 0);
cal2.set(java.util.Calendar.HOUR_OF_DAY, 0);
var startDate2 = cal2.getTime();
cal2.set(2100, 0, 1,0,0,0);
var endDate2 = cal2.getTime();
var vDateRange2 = session.createDateRange(startDate2, endDate2);
var v = new java.util.Vector();
v.addElement("Car");
v.addElement(vDateRange);
v.addElement(vDateRange2);
return v;
}catch(e){
print("view filter error: " + e.toString())
}
and the result of Vector v is
Car,01.01.70 00:00:00 CET - 20.06.2014 00:00:00 CEDT,19.06.2014 00:00:00 CEDT - 01.01.2100 00:00:00 CET
bevor Time adjustment
Car,01.01.70 00:00:00 CET - 18.06.2014 23:06:58 CEDT,17.06.2014 23:06:58 CEDT - 01.01.2100 00:00:00 CET
but the only trouble that remains here is the TIME
18.06.2014 21:22:50 CEDT
we need here 18.06.2014 23:59:59 CEDT
or 19.06.2014 00:00:00 CEDT
Upvotes: 0
Reputation: 21709
It's good practice not to do date filtering in the select statement for the view itself.
Instead you can use the ability to filter the view by a key (or a set of keys). In this case you then use a date range as the filter.
First, make sure that your view is sorted by the two date fields. Then add your filter keys.
The following shows a filter by a date range that I use to filter a view for a dynamic view panel to only show documents within a date range (of x days as specified by compositeData.limitDays) and to filter the view by a certain category (compositeData.catFilter).
<xp:this.keys><![CDATA[#{javascript:
try {
var cal = java.util.Calendar.getInstance();
cal.add(java.util.Calendar.DATE, compositeData.limitDays)
var endDate = cal.getTime();
cal.set(1970, 0, 1);
var startDate = cal.getTime();
var vDateRange = session.createDateRange(startDate, endDate);
var v = new java.util.Vector();
v.addElement(compositeData.catFilter);
v.addElement(vDateRange);
return v;
}catch(e){
print("view filter error: " + e.toString())
}
}]]></xp:this.keys>
Using the above you should be able to make your filtering of two date columns work.
Upvotes: 2