Most efficient way to check if a date falls between two dates?
Posted
by Dave Jarvis
on Stack Overflow
See other posts from Stack Overflow
or by Dave Jarvis
Published on 2010-05-13T03:25:32Z
Indexed on
2010/05/13
3:34 UTC
Read the original article
Hit count: 403
Given:
- Start Month & Start Day
- End Month & End Day
- Any Year
What SQL statement results in TRUE if a date lands between the Start and End days?
1st example:
- Start Date = 11-22
- End Date = 01-17
- Year = 2009
- Specific Date = 2010-01-14
- TRUE
2nd example:
- Start Date = 11-22
- End Date = 11-16
- Year = 2009
- Specific Date = 2010-11-20
- FALSE
3rd example:
- Start Date = 02-25
- End Date = 03-19
- Year = 2004
- Specific Date = 2004-02-29
- TRUE
I was thinking of using the MySQL functions datediff
and sign
plus a CASE
condition to determine whether the year wraps, but it seems rather expensive. Am looking for a simple, efficient calculation.
Update
The problem is the end date cannot simply use the year. The year must be increased if the end month/day combination happens before the start date. The start date is easy:
Start Date = date( concat_ws( '-', year, Start Month, Start Day )
The end date is not so simple.
Thank you!
© Stack Overflow or respective owner