If you are trying to identify intersecting date ranges then the following
function will do it:
Public Function WithinDateRange(dtmParamRangeStart As Date, _
dtmParamRangeEnd As Date, _
dtmDataRangeStart As Date, _
dtmDataRangeEnd As Date) As Boolean
' Accepts: date at which parameter range starts
' date at which parameter range ends
' date at which data range starts
' date at which data range ends
' Returns: True if data range intersects with parameter range
' False if whole of data range outside parameter range
' return True if:
' (a) start date within parameter range, or
' (b) end date within parameter range, or
' (c) parameter range entirely within data range
WithinDateRange = _
(dtmDataRangeStart >= dtmParamRangeStart And _
dtmDataRangeStart <= dtmParamRangeEnd) _
Or (dtmDataRangeEnd >= dtmParamRangeStart And _
dtmDataRangeEnd <= dtmParamRangeEnd) _
Or (dtmDataRangeStart <= dtmParamRangeStart And _
dtmDataRangeEnd >= dtmParamRangeEnd)
End Function
Call it in a query like so:
PARAMETERS
[Enter start date:] DATETIME,
[Enter end date:] DATETIME;
SELECT *
FROM [Employees]
WHERE
WithinDateRange([Enter start date:], Enter end date:],
[Start Date], [End Date]);
Ken Sheridan
Stafford, England
Hello,
I have a table of employee information, which include 2 fields called
Start
Date and End Date.
I want to be able to run a query that enables the user to enter a date
range
to find those who are between a specific Start Date and End Date.
Example: Find those between Sept 1, 2008 (Start Date) and September 30,
2008
(End Date).
Thanks,
JL