MySQL "between" clause not inclusive?

ASD picture ASD · Feb 22, 2011 · Viewed 123.9k times · Source

If I run a query with a between clause, it seems to exclude the ending value.
For example:

select * from person where dob between '2011-01-01' and '2011-01-31'

This gets all results with dob from '2011-01-01' till '2011-01-30'; skipping records where dob is '2011-01-31'. Can anyone explain why this query behaves this way, and how I could modify it to include records where dob is '2011-01-31'? (without adding 1 to the ending date because its been selected by the users.)

Answer

Frank Heikens picture Frank Heikens · Feb 22, 2011

From the MySQL-manual:

This is equivalent to the expression (min <= expr AND expr <= max)