1 | -- -------------------------------------------------------------------- |
---|
2 | -- This file is a set of tests for the RRULE sql functions taken from |
---|
3 | -- the examples in RFC2445 section 4.8.5.4 |
---|
4 | -- -------------------------------------------------------------------- |
---|
5 | -- -------------------------------------------------------------------- |
---|
6 | -- Daily for 10 occurrences: |
---|
7 | -- |
---|
8 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
9 | -- RRULE:FREQ=DAILY;COUNT=10 |
---|
10 | -- |
---|
11 | -- ==> (1997 9:00 AM EDT)September 2-11 |
---|
12 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=DAILY;COUNT=10' ); |
---|
13 | -- |
---|
14 | -- -------------------------------------------------------------------- |
---|
15 | -- Daily until December 24, 1997: |
---|
16 | -- |
---|
17 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
18 | -- RRULE:FREQ=DAILY;UNTIL=19971224T000000Z |
---|
19 | -- |
---|
20 | -- ==> (1997 9:00 AM EDT)September 2-30;October 1-25 |
---|
21 | -- (1997 9:00 AM EST)October 26-31;November 1-30;December 1-23 |
---|
22 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=DAILY;UNTIL=19971224T000000' ); |
---|
23 | -- |
---|
24 | -- -------------------------------------------------------------------- |
---|
25 | -- Every other day - forever: |
---|
26 | -- |
---|
27 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
28 | -- RRULE:FREQ=DAILY;INTERVAL=2 |
---|
29 | -- ==> (1997 9:00 AM EDT)September2,4,6,8...24,26,28,30; |
---|
30 | -- October 2,4,6...20,22,24 |
---|
31 | -- (1997 9:00 AM EST)October 26,28,30;November 1,3,5,7...25,27,29; |
---|
32 | -- Dec 1,3,... |
---|
33 | -- |
---|
34 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=DAILY;INTERVAL=2' ) LIMIT 50; |
---|
35 | -- -------------------------------------------------------------------- |
---|
36 | -- Every 10 days, 5 occurrences: |
---|
37 | -- |
---|
38 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
39 | -- RRULE:FREQ=DAILY;INTERVAL=10;COUNT=5 |
---|
40 | -- |
---|
41 | -- ==> (1997 9:00 AM EDT)September 2,12,22;October 2,12 |
---|
42 | -- |
---|
43 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=DAILY;INTERVAL=10;COUNT=5' ); |
---|
44 | -- -------------------------------------------------------------------- |
---|
45 | -- Everyday in January, for 3 years: |
---|
46 | -- |
---|
47 | -- DTSTART;TZID=US-Eastern:19980101T090000 |
---|
48 | -- RRULE:FREQ=YEARLY;UNTIL=20000131T090000Z; |
---|
49 | -- BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA |
---|
50 | -- or |
---|
51 | -- RRULE:FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1 |
---|
52 | -- |
---|
53 | -- ==> (1998 9:00 AM EDT)January 1-31 |
---|
54 | -- (1999 9:00 AM EDT)January 1-31 |
---|
55 | -- (2000 9:00 AM EDT)January 1-31 |
---|
56 | -- |
---|
57 | --- ? No instance on January 31, since 9:00am EDT is after 2000-01-31 09:00:00 UTC. I think that is correct. |
---|
58 | --- ? SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19980101T090000', 'FREQ=YEARLY;UNTIL=20000131T090000Z;BYMONTH=1;BYDAY=SU,MO,TU,WE,TH,FR,SA' ); |
---|
59 | --- ? No instance on January 31, since 9:00am EDT is after 2000-01-31 09:00:00 UTC. I think that is correct. |
---|
60 | --- ? SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19980101T090000', 'FREQ=DAILY;UNTIL=20000131T090000Z;BYMONTH=1' ); |
---|
61 | -- -------------------------------------------------------------------- |
---|
62 | -- Weekly for 10 occurrences |
---|
63 | -- |
---|
64 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
65 | -- RRULE:FREQ=WEEKLY;COUNT=10 |
---|
66 | -- |
---|
67 | -- ==> (1997 9:00 AM EDT)September 2,9,16,23,30;October 7,14,21 |
---|
68 | -- (1997 9:00 AM EST)October 28;November 4 |
---|
69 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;COUNT=10' ); |
---|
70 | -- |
---|
71 | -- -------------------------------------------------------------------- |
---|
72 | -- Weekly until December 24, 1997 |
---|
73 | -- |
---|
74 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
75 | -- RRULE:FREQ=WEEKLY;UNTIL=19971224T000000Z |
---|
76 | -- |
---|
77 | -- ==> (1997 9:00 AM EDT)September 2,9,16,23,30;October 7,14,21 |
---|
78 | -- (1997 9:00 AM EST)October 28;November 4,11,18,25; |
---|
79 | -- December 2,9,16,23 |
---|
80 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;UNTIL=19971224T000000Z' ); |
---|
81 | -- |
---|
82 | -- -------------------------------------------------------------------- |
---|
83 | -- Every other week - forever: |
---|
84 | -- |
---|
85 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
86 | -- RRULE:FREQ=WEEKLY;INTERVAL=2;WKST=SU |
---|
87 | -- |
---|
88 | -- ==> (1997 9:00 AM EDT)September 2,16,30;October 14 |
---|
89 | -- (1997 9:00 AM EST)October 28;November 11,25;December 9,23 |
---|
90 | -- (1998 9:00 AM EST)January 6,20;February 3, 17 |
---|
91 | -- ... |
---|
92 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;INTERVAL=2;WKST=SU' ) LIMIT 13; |
---|
93 | -- |
---|
94 | -- -------------------------------------------------------------------- |
---|
95 | -- Weekly on Tuesday and Thursday for 5 weeks: |
---|
96 | -- |
---|
97 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
98 | -- RRULE:FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH |
---|
99 | -- or |
---|
100 | -- RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH |
---|
101 | -- |
---|
102 | -- ==> (1997 9:00 AM EDT)September 2,4,9,11,16,18,23,25,30;October 2 |
---|
103 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;UNTIL=19971007T000000Z;WKST=SU;BYDAY=TU,TH' ); |
---|
104 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH' ); |
---|
105 | -- |
---|
106 | -- -------------------------------------------------------------------- |
---|
107 | -- Every other week on Monday, Wednesday and Friday until December 24, |
---|
108 | -- 1997, but starting on Tuesday, September 2, 1997: |
---|
109 | -- |
---|
110 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
111 | -- RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU; |
---|
112 | -- BYDAY=MO,WE,FR |
---|
113 | -- ==> (1997 9:00 AM EDT)September 2,3,5,15,17,19,29;October |
---|
114 | -- 1,3,13,15,17 |
---|
115 | -- (1997 9:00 AM EST)October 27,29,31;November 10,12,14,24,26,28; |
---|
116 | -- December 8,10,12,22 |
---|
117 | -- !!! This is challenging, because it starts on DTSTART even though DTSTART fails the repeat criteria. In fact no known provide a UI that allows data like this to be created. |
---|
118 | --- !!! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;INTERVAL=2;UNTIL=19971224T000000Z;WKST=SU;BYDAY=MO,WE,FR' ); |
---|
119 | -- |
---|
120 | -- -------------------------------------------------------------------- |
---|
121 | -- Every other week on Tuesday and Thursday, for 8 occurrences: |
---|
122 | -- |
---|
123 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
124 | -- RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH |
---|
125 | -- |
---|
126 | -- ==> (1997 9:00 AM EDT)September 2,4,16,18,30;October 2,14,16 |
---|
127 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=WEEKLY;INTERVAL=2;COUNT=8;WKST=SU;BYDAY=TU,TH' ); |
---|
128 | -- |
---|
129 | -- -------------------------------------------------------------------- |
---|
130 | -- Monthly on the 1st Friday for ten occurrences: |
---|
131 | -- |
---|
132 | -- DTSTART;TZID=US-Eastern:19970905T090000 |
---|
133 | -- RRULE:FREQ=MONTHLY;COUNT=10;BYDAY=1FR |
---|
134 | -- |
---|
135 | -- ==> (1997 9:00 AM EDT)September 5;October 3 |
---|
136 | -- (1997 9:00 AM EST)November 7;Dec 5 |
---|
137 | -- (1998 9:00 AM EST)January 2;February 6;March 6;April 3 |
---|
138 | -- (1998 9:00 AM EDT)May 1;June 5 |
---|
139 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970905T090000', 'FREQ=MONTHLY;COUNT=10;BYDAY=1FR' ); |
---|
140 | -- |
---|
141 | -- -------------------------------------------------------------------- |
---|
142 | -- Monthly on the 1st Friday until December 24, 1997: |
---|
143 | -- |
---|
144 | -- DTSTART;TZID=US-Eastern:19970905T090000 |
---|
145 | -- RRULE:FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR |
---|
146 | -- |
---|
147 | -- ==> (1997 9:00 AM EDT)September 5;October 3 |
---|
148 | -- (1997 9:00 AM EST)November 7;December 5 |
---|
149 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970905T090000', 'FREQ=MONTHLY;UNTIL=19971224T000000Z;BYDAY=1FR' ); |
---|
150 | -- |
---|
151 | -- -------------------------------------------------------------------- |
---|
152 | -- Every other month on the 1st and last Sunday of the month for 10 |
---|
153 | -- occurrences: |
---|
154 | -- |
---|
155 | -- DTSTART;TZID=US-Eastern:19970907T090000 |
---|
156 | -- RRULE:FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU |
---|
157 | -- |
---|
158 | -- ==> (1997 9:00 AM EDT)September 7,28 |
---|
159 | -- (1997 9:00 AM EST)November 2,30 |
---|
160 | -- (1998 9:00 AM EST)January 4,25;March 1,29 |
---|
161 | -- (1998 9:00 AM EDT)May 3,31 |
---|
162 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970907T090000', 'FREQ=MONTHLY;INTERVAL=2;COUNT=10;BYDAY=1SU,-1SU' ); |
---|
163 | -- |
---|
164 | -- -------------------------------------------------------------------- |
---|
165 | -- Monthly on the second to last Monday of the month for 6 months: |
---|
166 | -- |
---|
167 | -- DTSTART;TZID=US-Eastern:19970922T090000 |
---|
168 | -- RRULE:FREQ=MONTHLY;COUNT=6;BYDAY=-2MO |
---|
169 | -- |
---|
170 | -- ==> (1997 9:00 AM EDT)September 22;October 20 |
---|
171 | -- (1997 9:00 AM EST)November 17;December 22 |
---|
172 | -- (1998 9:00 AM EST)January 19;February 16 |
---|
173 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=MONTHLY;COUNT=6;BYDAY=-2MO' ); |
---|
174 | -- |
---|
175 | -- -------------------------------------------------------------------- |
---|
176 | -- Monthly on the third to the last day of the month, forever: |
---|
177 | -- |
---|
178 | -- DTSTART;TZID=US-Eastern:19970928T090000 |
---|
179 | -- RRULE:FREQ=MONTHLY;BYMONTHDAY=-3 |
---|
180 | -- |
---|
181 | -- ==> (1997 9:00 AM EDT)September 28 |
---|
182 | -- (1997 9:00 AM EST)October 29;November 28;December 29 |
---|
183 | -- (1998 9:00 AM EST)January 29;February 26 |
---|
184 | -- ... |
---|
185 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=MONTHLY;BYMONTHDAY=-3' ) LIMIT 6; |
---|
186 | -- |
---|
187 | -- -------------------------------------------------------------------- |
---|
188 | -- Monthly on the 2nd and 15th of the month for 10 occurrences: |
---|
189 | -- |
---|
190 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
191 | -- RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15 |
---|
192 | -- |
---|
193 | -- ==> (1997 9:00 AM EDT)September 2,15;October 2,15 |
---|
194 | -- (1997 9:00 AM EST)November 2,15;December 2,15 |
---|
195 | -- (1998 9:00 AM EST)January 2,15 |
---|
196 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=MONTHLY;COUNT=10;BYMONTHDAY=2,15' ); |
---|
197 | -- |
---|
198 | -- -------------------------------------------------------------------- |
---|
199 | -- Monthly on the first and last day of the month for 10 occurrences: |
---|
200 | -- |
---|
201 | -- DTSTART;TZID=US-Eastern:19970930T090000 |
---|
202 | -- RRULE:FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1 |
---|
203 | -- |
---|
204 | -- ==> (1997 9:00 AM EDT)September 30;October 1 |
---|
205 | -- (1997 9:00 AM EST)October 31;November 1,30;December 1,31 |
---|
206 | -- (1998 9:00 AM EST)January 1,31;February 1 |
---|
207 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970930T090000', 'FREQ=MONTHLY;COUNT=10;BYMONTHDAY=1,-1' ); |
---|
208 | -- |
---|
209 | -- -------------------------------------------------------------------- |
---|
210 | -- Every 18 months on the 10th thru 15th of the month for 10 |
---|
211 | -- occurrences: |
---|
212 | -- |
---|
213 | -- DTSTART;TZID=US-Eastern:19970910T090000 |
---|
214 | -- RRULE:FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14, |
---|
215 | -- 15 |
---|
216 | -- |
---|
217 | -- ==> (1997 9:00 AM EDT)September 10,11,12,13,14,15 |
---|
218 | -- (1999 9:00 AM EST)March 10,11,12,13 |
---|
219 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970910T090000', 'FREQ=MONTHLY;INTERVAL=18;COUNT=10;BYMONTHDAY=10,11,12,13,14,15' ); |
---|
220 | -- |
---|
221 | -- -------------------------------------------------------------------- |
---|
222 | -- Every Tuesday, every other month: |
---|
223 | -- |
---|
224 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
225 | -- RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=TU |
---|
226 | -- |
---|
227 | -- ==> (1997 9:00 AM EDT)September 2,9,16,23,30 |
---|
228 | -- (1997 9:00 AM EST)November 4,11,18,25 |
---|
229 | -- (1998 9:00 AM EST)January 6,13,20,27;March 3,10,17,24,31 |
---|
230 | -- ... |
---|
231 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=MONTHLY;INTERVAL=2;BYDAY=TU' ) LIMIT 18; |
---|
232 | -- |
---|
233 | -- -------------------------------------------------------------------- |
---|
234 | -- Yearly in June and July for 10 occurrences: |
---|
235 | -- |
---|
236 | -- DTSTART;TZID=US-Eastern:19970610T090000 |
---|
237 | -- RRULE:FREQ=YEARLY;COUNT=10;BYMONTH=6,7 |
---|
238 | -- ==> (1997 9:00 AM EDT)June 10;July 10 |
---|
239 | -- (1998 9:00 AM EDT)June 10;July 10 |
---|
240 | -- (1999 9:00 AM EDT)June 10;July 10 |
---|
241 | -- (2000 9:00 AM EDT)June 10;July 10 |
---|
242 | -- (2001 9:00 AM EDT)June 10;July 10 |
---|
243 | -- Note: Since none of the BYDAY, BYMONTHDAY or BYYEARDAY components |
---|
244 | -- are specified, the day is gotten from DTSTART |
---|
245 | --- !!! We miss the first instance in June. Busted. |
---|
246 | --- !!! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970610T090000', 'FREQ=YEARLY;COUNT=10;BYMONTH=6,7' ); |
---|
247 | -- |
---|
248 | -- -------------------------------------------------------------------- |
---|
249 | -- Every other year on January, February, and March for 10 occurrences: |
---|
250 | -- |
---|
251 | -- DTSTART;TZID=US-Eastern:19970310T090000 |
---|
252 | -- RRULE:FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3 |
---|
253 | -- |
---|
254 | -- ==> (1997 9:00 AM EST)March 10 |
---|
255 | -- (1999 9:00 AM EST)January 10;February 10;March 10 |
---|
256 | -- (2001 9:00 AM EST)January 10;February 10;March 10 |
---|
257 | -- (2003 9:00 AM EST)January 10;February 10;March 10 |
---|
258 | --- !!! We miss the first instance in March. Busted. |
---|
259 | --- !!! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970310T090000', 'FREQ=YEARLY;INTERVAL=2;COUNT=10;BYMONTH=1,2,3' ); |
---|
260 | -- |
---|
261 | -- -------------------------------------------------------------------- |
---|
262 | -- Every 3rd year on the 1st, 100th and 200th day for 10 occurrences: |
---|
263 | -- |
---|
264 | -- DTSTART;TZID=US-Eastern:19970101T090000 |
---|
265 | -- RRULE:FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200 |
---|
266 | -- |
---|
267 | -- ==> (1997 9:00 AM EST)January 1 |
---|
268 | -- (1997 9:00 AM EDT)April 10;July 19 |
---|
269 | -- (2000 9:00 AM EST)January 1 |
---|
270 | -- (2000 9:00 AM EDT)April 9;July 18 |
---|
271 | -- (2003 9:00 AM EST)January 1 |
---|
272 | -- (2003 9:00 AM EDT)April 10;July 19 |
---|
273 | -- (2006 9:00 AM EST)January 1 |
---|
274 | --- ! We don't support BYYEARDAY yet. |
---|
275 | --- ! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970101T090000', 'FREQ=YEARLY;INTERVAL=3;COUNT=10;BYYEARDAY=1,100,200' ); |
---|
276 | -- |
---|
277 | -- -------------------------------------------------------------------- |
---|
278 | -- Every 20th Monday of the year, forever: |
---|
279 | -- DTSTART;TZID=US-Eastern:19970519T090000 |
---|
280 | -- RRULE:FREQ=YEARLY;BYDAY=20MO |
---|
281 | -- |
---|
282 | -- ==> (1997 9:00 AM EDT)May 19 |
---|
283 | -- (1998 9:00 AM EDT)May 18 |
---|
284 | -- (1999 9:00 AM EDT)May 17 |
---|
285 | -- ... |
---|
286 | --- ! We don't support BYDAY for yearly events. We don't support YEARLY at all well, TBH |
---|
287 | --- ! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970519T090000', 'FREQ=YEARLY;BYDAY=20MO' ) LIMIT 3; |
---|
288 | -- |
---|
289 | -- -------------------------------------------------------------------- |
---|
290 | -- Monday of week number 20 (where the default start of the week is |
---|
291 | -- Monday), forever: |
---|
292 | -- |
---|
293 | -- DTSTART;TZID=US-Eastern:19970512T090000 |
---|
294 | -- RRULE:FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO |
---|
295 | -- |
---|
296 | -- ==> (1997 9:00 AM EDT)May 12 |
---|
297 | -- (1998 9:00 AM EDT)May 11 |
---|
298 | -- (1999 9:00 AM EDT)May 17 |
---|
299 | -- ... |
---|
300 | --- ! We don't support BYWEEKNO at all yet. |
---|
301 | --- ! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970512T090000', 'FREQ=YEARLY;BYWEEKNO=20;BYDAY=MO' ) LIMIT 3; |
---|
302 | -- |
---|
303 | -- -------------------------------------------------------------------- |
---|
304 | -- Every Thursday in March, forever: |
---|
305 | -- |
---|
306 | -- DTSTART;TZID=US-Eastern:19970313T090000 |
---|
307 | -- RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=TH |
---|
308 | -- |
---|
309 | -- ==> (1997 9:00 AM EST)March 13,20,27 |
---|
310 | -- (1998 9:00 AM EST)March 5,12,19,26 |
---|
311 | -- (1999 9:00 AM EST)March 4,11,18,25 |
---|
312 | -- ... |
---|
313 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970313T090000', 'FREQ=YEARLY;BYMONTH=3;BYDAY=TH' ) LIMIT 11; |
---|
314 | -- |
---|
315 | -- -------------------------------------------------------------------- |
---|
316 | -- Every Thursday, but only during June, July, and August, forever: |
---|
317 | -- |
---|
318 | -- DTSTART;TZID=US-Eastern:19970605T090000 |
---|
319 | -- RRULE:FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8 |
---|
320 | -- |
---|
321 | -- ==> (1997 9:00 AM EDT)June 5,12,19,26;July 3,10,17,24,31; |
---|
322 | -- August 7,14,21,28 |
---|
323 | -- (1998 9:00 AM EDT)June 4,11,18,25;July 2,9,16,23,30; |
---|
324 | -- August 6,13,20,27 |
---|
325 | -- (1999 9:00 AM EDT)June 3,10,17,24;July 1,8,15,22,29; |
---|
326 | -- August 5,12,19,26 |
---|
327 | -- ... |
---|
328 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970605T090000', 'FREQ=YEARLY;BYDAY=TH;BYMONTH=6,7,8' ) LIMIT 39; |
---|
329 | -- |
---|
330 | -- -------------------------------------------------------------------- |
---|
331 | -- Every Friday the 13th, forever: |
---|
332 | -- |
---|
333 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
334 | -- EXDATE;TZID=US-Eastern:19970902T090000 |
---|
335 | -- RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13 |
---|
336 | -- |
---|
337 | -- ==> (1998 9:00 AM EST)February 13;March 13;November 13 |
---|
338 | -- (1999 9:00 AM EDT)August 13 |
---|
339 | -- (2000 9:00 AM EDT)October 13 |
---|
340 | -- ... |
---|
341 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=13' ) LIMIT 35; |
---|
342 | -- |
---|
343 | -- -------------------------------------------------------------------- |
---|
344 | -- The first Saturday that follows the first Sunday of the month, |
---|
345 | -- forever: |
---|
346 | -- |
---|
347 | -- DTSTART;TZID=US-Eastern:19970913T090000 |
---|
348 | -- RRULE:FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13 |
---|
349 | -- |
---|
350 | -- ==> (1997 9:00 AM EDT)September 13;October 11 |
---|
351 | -- (1997 9:00 AM EST)November 8;December 13 |
---|
352 | -- (1998 9:00 AM EST)January 10;February 7;March 7 |
---|
353 | -- (1998 9:00 AM EDT)April 11;May 9;June 13... |
---|
354 | -- ... |
---|
355 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970913T090000', 'FREQ=MONTHLY;BYDAY=SA;BYMONTHDAY=7,8,9,10,11,12,13' ) LIMIT 10; |
---|
356 | -- |
---|
357 | -- -------------------------------------------------------------------- |
---|
358 | -- Every four years, the first Tuesday after a Monday in November, |
---|
359 | -- forever (U.S. Presidential Election day): |
---|
360 | -- |
---|
361 | -- DTSTART;TZID=US-Eastern:19961105T090000 |
---|
362 | -- RRULE:FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4, |
---|
363 | -- 5,6,7,8 |
---|
364 | -- |
---|
365 | -- ==> (1996 9:00 AM EST)November 5 |
---|
366 | -- (2000 9:00 AM EST)November 7 |
---|
367 | -- (2004 9:00 AM EST)November 2 |
---|
368 | -- ... |
---|
369 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19961105T090000', 'FREQ=YEARLY;INTERVAL=4;BYMONTH=11;BYDAY=TU;BYMONTHDAY=2,3,4,5,6,7,8' ) LIMIT 6; |
---|
370 | -- |
---|
371 | -- -------------------------------------------------------------------- |
---|
372 | -- The 3rd instance into the month of one of Tuesday, Wednesday or |
---|
373 | -- Thursday, for the next 3 months: |
---|
374 | -- |
---|
375 | -- DTSTART;TZID=US-Eastern:19970904T090000 |
---|
376 | -- RRULE:FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3 |
---|
377 | -- |
---|
378 | -- ==> (1997 9:00 AM EDT)September 4;October 7 |
---|
379 | -- (1997 9:00 AM EST)November 6 |
---|
380 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970904T090000', 'FREQ=MONTHLY;COUNT=3;BYDAY=TU,WE,TH;BYSETPOS=3' ); |
---|
381 | -- |
---|
382 | -- -------------------------------------------------------------------- |
---|
383 | -- The 2nd to last weekday of the month: |
---|
384 | -- |
---|
385 | -- DTSTART;TZID=US-Eastern:19970929T090000 |
---|
386 | -- RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2 |
---|
387 | -- |
---|
388 | -- ==> (1997 9:00 AM EDT)September 29 |
---|
389 | -- (1997 9:00 AM EST)October 30;November 27;December 30 |
---|
390 | -- (1998 9:00 AM EST)January 29;February 26;March 30 |
---|
391 | -- ... |
---|
392 | --- SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970929T090000', 'FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-2' ) LIMIT 8; |
---|
393 | -- |
---|
394 | -- -------------------------------------------------------------------- |
---|
395 | -- Every 3 hours from 9:00 AM to 5:00 PM on a specific day: |
---|
396 | -- |
---|
397 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
398 | -- RRULE:FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z |
---|
399 | -- |
---|
400 | -- ==> (September 2, 1997 EDT)09:00,12:00,15:00 |
---|
401 | --- !! FREQ=HOURLY Not implemented |
---|
402 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=HOURLY;INTERVAL=3;UNTIL=19970902T170000Z' ); |
---|
403 | -- |
---|
404 | -- -------------------------------------------------------------------- |
---|
405 | -- Every 15 minutes for 6 occurrences: |
---|
406 | -- |
---|
407 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
408 | -- RRULE:FREQ=MINUTELY;INTERVAL=15;COUNT=6 |
---|
409 | -- |
---|
410 | -- ==> (September 2, 1997 EDT)09:00,09:15,09:30,09:45,10:00,10:15 |
---|
411 | --- !! FREQ=MINUTELY Not implemented |
---|
412 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('', '' ); |
---|
413 | -- |
---|
414 | -- -------------------------------------------------------------------- |
---|
415 | -- Every hour and a half for 4 occurrences: |
---|
416 | -- |
---|
417 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
418 | -- RRULE:FREQ=MINUTELY;INTERVAL=90;COUNT=4 |
---|
419 | -- |
---|
420 | -- ==> (September 2, 1997 EDT)09:00,10:30;12:00;13:30 |
---|
421 | --- !! FREQ=HOURLY Not implemented |
---|
422 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('', '' ); |
---|
423 | -- |
---|
424 | -- -------------------------------------------------------------------- |
---|
425 | -- Every 20 minutes from 9:00 AM to 4:40 PM every day: |
---|
426 | -- |
---|
427 | -- DTSTART;TZID=US-Eastern:19970902T090000 |
---|
428 | -- RRULE:FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40 |
---|
429 | -- or |
---|
430 | -- RRULE:FREQ=MINUTELY;INTERVAL=20;BYHOUR=9,10,11,12,13,14,15,16 |
---|
431 | -- |
---|
432 | -- ==> (September 2, 1997 EDT)9:00,9:20,9:40,10:00,10:20, |
---|
433 | -- ... 16:00,16:20,16:40 |
---|
434 | -- (September 3, 1997 EDT)9:00,9:20,9:40,10:00,10:20, |
---|
435 | -- ...16:00,16:20,16:40 |
---|
436 | -- ... |
---|
437 | --- !! FREQ=MINUTELY and/or BYHOUR Not implemented |
---|
438 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970902T090000', 'FREQ=DAILY;BYHOUR=9,10,11,12,13,14,15,16;BYMINUTE=0,20,40' ) LIMIT 500; |
---|
439 | -- |
---|
440 | -- -------------------------------------------------------------------- |
---|
441 | -- An example where the days generated makes a difference because of |
---|
442 | -- WKST: |
---|
443 | -- |
---|
444 | -- DTSTART;TZID=US-Eastern:19970805T090000 |
---|
445 | -- RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO |
---|
446 | -- |
---|
447 | -- ==> (1997 EDT)Aug 5,10,19,24 |
---|
448 | -- |
---|
449 | -- changing only WKST from MO to SU, yields different results... |
---|
450 | -- |
---|
451 | -- DTSTART;TZID=US-Eastern:19970805T090000 |
---|
452 | -- RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU |
---|
453 | -- ==> (1997 EDT)August 5,17,19,31 |
---|
454 | -- |
---|
455 | --- !! WKST Not implemented. The second one works fine because WKST == SU in all our code. |
---|
456 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970805T090000', 'FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=MO' ); |
---|
457 | --- !! SET timezone TO 'US/Eastern'; SELECT * FROM event_instances('19970805T090000', 'FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU' ); |
---|
458 | -- |
---|