Time window query
Posted in 2000
I need to determine whether a date falls within a future datespan based
on a given interval. For example, the division VP has several
development groups, each with projects which have different review
cycles (e.g. 2, 3, or 4 weeks). Based on each project begin date, he
wants to know which projects are up for review during a given week.
I have a generic query:
select proj_begin_date
from project wherebegin_date > (today - X units year) and
date(windowenddate) > date(windowbegindate) and
proj_begin_date < date(windowbegindate) and
((date(windowbegindate) - mod((windowbegindate) - proj_begin_date),
interval) + interval) <= date(windowenddate)
or
mod((date(windowbegindate) - proj_begin_date),interval) = 0
or
mod((date(windowenddate) - proj_begin_date),interval) = 0)
Assuming:
intervals are inclusive of begin/end dates
X = absolute period of time
windowbegindate = date of start of future date span
windowenddate = date of end of future date span
interval = number of days for review cycle
So, for example, for a monthly (ie 30 day) review cycle and window of
the
first full week of February, 2001:
select proj_begin_date
from project whereproj_begin_date > (today - 3 units year) and
date("2/5/2001") > date("2/9/2001") and
proj_begin_date < date("2/5/2001")
and
((date("2/5/2001") - mod((date("2/5/2001") - proj_begin_date), 30) + 30)
<= date("2/9/2001")
or
mod((date("2/5/2001") - proj_begin_date),30) = 0
or
mod((date("2/9/2001") - proj_begin_date),30) = 0 )
Are there any problems with this query? Is there a cleaner way of doing
this? Is anyone aware of any repositories of date/datetime related
queries that would prevent me from redundantly and repetitively
reinventing the wheel over & over again?